error 1044 (42000):access denied for user ''@'localhost' to database 'mysql' 解决方法

重新安装mariaDB数据库时,出现安装权限问题,中止安装发现居然能够登陆mysql,但是登陆时可以不填密码,操作数据库时会报错:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。我是远程登录数据库的,网上找了一些方法,终于搞定了。
 
后来解决成功,发现是因为mariaDB数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来。解决方法如下:
 
在my.cnf的[mysqld]字段加入: 

skip-grant-tables

重启mysql服务,这时的mariaDB不需要密码即可登录数据库
然后进入mariaDB
mysql>use mysql;
mysql>delete from user where user=''; 
mysql>flush privileges;

删除掉匿名用户,即可以root方式登陆数据库。
运行之后最后去掉my.ini中的skip-grant-tables,重启数据库(systemctl restart mariadb.service)即可。

你可能感兴趣的:(数据库)