mysql5.6安装完成后默认匿名用户可以登录,使用mysqladmin修改root密码后,用mysql -uroot -p ‘密码’ 的方式是没办法登录的,因为默认登录的还是匿名用户,用mysql 直接匿名登录进去的话,show databases; 语句显示的数据库中没有了mysql数据库,也就不能进行删除匿名用户的操作了。下面要删除匿名用户按照网上的方法的话使用mysqld_safe --skip-grant-table启动数据库,在另外终端登录结果mysql数据库中表格显示为空,也就没办法操作user表了。
网上的方法如下,可能是适应情景不对:
1.关闭mysql
service mysqld stop
2.屏蔽权限
mysqld_safe --skip-grant-table
屏幕出现: Starting demo from .....
3.新开起一个终端输入
mysql -u root mysql
mysql> delete from user where USER='';
到了这一步显示没有user表,show tables;也是显示数据库为空。
mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
mysql> \q
然后我的解决方法是在my.cnf配置文件中使用skip-grant-table语句,然后重新启动mysql再匿名登录就可以删除用户了。
我参照的网上的方法如下:
1.修改MySQL的登录设置:
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存并且退出vi。
2.重新启动mysqld
/etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
3.登录并修改MySQL的root密码
/usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
我是删除匿名用户,直接使用语句
delete from user where USER='';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.将MySQL的登录设置修改回来
vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
/etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
使用mysqladmin修改的密码登录就可以。
网友评论