在centos下搭建mysql数据库一切正常而重启服务器后登录mysql数据库出现了如下的问题
当输入mysql -u root -p 回车,输入已设置的密码时直接提示密码错误,而直接以密码为空时回车却能直接进入mysql数据库。这很容易给人以不安全的感觉,然而即便登录了数据库,在执行show databases;时你会发现之前创建的数据库没了,假设之前创建的数据库名称为test,若直接use test;选择自己创建的数据库时则出现如下的报错。
mysql>use test;
mysql>ERROR 1044 (42000): Access denied for user ”@’localhost’ to database ‘test’
经上网查是因为默认的mysql数据库存在一个空用户,将其删除即可解决问题。
mysql> delete from mysql.user where user=”;
不过执行此语句时又报1142错误:
mysql> ERROR 1142 (42000): DELETE command denied to user ”@’localhost’ for table ‘user’
该问题是因为root没有select权限引起的。
解决,赋予root权限。
停止MySQL服务
service mysqld stop
加参数启动mysql
/usr/bin/mysqld_safe –skip-grant-tables &
接下来就可以正常访问了
然后
mysql> use mysql;
删除空用户
mysql> delete from user where user = ”;
最后刷新权限表
mysql> flush privileges;
重启数据库解决mysql再次登录不用输入密码及不显示已创建的数据库的问题。
service mysqld restart