使用root用户本地访问进入数据库时,不显示mysql库?
并且创建数据库报错
MariaDB [(none)]> create database mysql;
ERROR 1044 (42000): Access denied for user ‘’@‘localhost’ to database ‘mysql’
1、问题背景
- 使用root用户正常访问数据库时如下
可以看见mysql库的一些系统信息
- 报错情况如下
- 比如我创建数据库权限报错
2、解决办法
尝试了很多办法,甚至重装mysql发现还是失败,并且又遇见了另外一个问题:mysql卸载不干净
如何完整干净的卸载mysql,请参考:https://blog.csdn.net/m0_49562857/article/details/129049754?spm=1001.2014.3001.5502
后来查询很多资料,发现其实并不是把mysql库删掉了,而是把所有root用户以及root用户所有相关的授权删掉了,才导致我使用root用户访问数据库报错
解决办法:
- 关闭数据库
systemctl stop mariadb
- 屏蔽权限启动数据库
mysqld_safe --skip-grant-table
-
另外起一个linux窗口
- 1.进入数据库
mysql -uroot mysql
- 2.查询当前数据库里所有的用户及其授权情况
select host,user,password from mysql.user;
有root用户请参考步骤4
无root用户请参考步骤5
- 3.删除空密码用户
delete from user where USER=''; FLUSH PRIVILEGES;
- 4.查询后发现系统里有root用户执行以下命令
UPDATE user SET Password=PASSWORD('新密码') where USER='root'; FLUSH PRIVILEGES;
- 5.查询后发现系统里没有root用户执行以下命令
grant all on *.* to 'root'@'localhost' identified by '新密码'; flush privileges;
-
kill掉现存的mysql进程
- 启动数据库查询发现显示mysql库了