mysql虽说部署安装相比oracle,简单且易于上手,但真正要把部署这块搞通弄精,也不是一下子的功夫。需要持续查阅官方手册,辅以动手实践,同时结合网上一些权威大牛的文章,才可以更为全方位多层次的掌握加深理解。
1,部署完mysql 5.5发现只能查看数据库information_schema数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
2,查看datadir可知其它数据库mysql,performance_schema,test是存在的
mysql> show variables like '%datadir%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)
[root@mygirl local]# ll usr/local/mysql/data
total 12
drwx------. 2 mysql mysql 4096 Jan 2 19:26 mysql
drwx------. 2 mysql mysql 4096 Jan 2 19:26 performance_schema
drwxr-xr-x. 2 mysql mysql 4096 Jan 2 19:24 test
3,附加选项--skip-grant-table重启mysql后,即可查看所有的数据库
[root@mygirl local]# usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
[1] 8014
[root@mygirl local]# Logging to '/usr/local/mysql/data/mygirl.err'.
180102 19:41:30 mysqld_safe Starting mysqld daemon with databases from usr/local/mysql/data
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
4,并且使用--skip-grant-table可以无密码登陆mysql
(注:事实root用户是有密码的)
[root@mygirl local]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
mysql> select host,user,password from mysql.user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *0BE179E54992731AB04DABE559259A9F42801194 |
| mygirl | root | *0BE179E54992731AB04DABE559259A9F42801194 |
| 127.0.0.1 | root | *0BE179E54992731AB04DABE559259A9F42801194 |
| ::1 | root | *0BE179E54992731AB04DABE559259A9F42801194 |
| localhost | | |
| mygirl | | |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
5,mysql对于此选项--skip-grant-table为false,是需要密码才可以登陆mysql
[root@mygirl local]# /usr/local/mysql/bin/mysqld --verbose --help|grep -i --color skip-grant-table
180102 20:04:08 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
180102 20:04:08 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.58) starting as process 8921 ...
180102 20:04:08 [Note] Plugin 'FEDERATED' is disabled.
--skip-grant-tables Start without grant tables. This gives all users FULL
skip-grant-tables FALSE
[root@mygirl local]#
[root@mygirl local]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@mygirl local]#
6,--skip-grant-table选项含义
a,mysql服务器启动不使用权限系统,即任何人不用密码即可创建
b,可以执行mysqladmin flush-privileges或mysqladmin reload或者执行flush privileges让正在运行且不使用权限系统的mysql服务器重新使用权限系统
7,手工验证下 上述第6步之b的结论,确实如此
[root@mygirl local]# /usr/local/mysql/bin/mysqladmin shutdown -u root -p
[root@mygirl local]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables=true &
[root@mygirl local]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
[root@mygirl ~]# /usr/local/mysql/bin/mysqladmin reload
[root@mygirl local]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@mygirl local]#