我有奇怪的错误.我通过命令行以root身份登录本地Mysql.创建数据库后:
create database some_db;
Run Code Online (Sandbox Code Playgroud)
然后给某些用户授予权限:
grant all privileges on some_db.* to some_user@'localhost' identified by 'password';
Run Code Online (Sandbox Code Playgroud)
这是错误的:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'
Run Code Online (Sandbox Code Playgroud)
root(show grants;)的权限显示:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA'
Run Code Online (Sandbox Code Playgroud)
我也确保我以root身份登录:
select current_user();
Run Code Online (Sandbox Code Playgroud)
这证实我以"root"@"localhost"身份登录
我已多次创建数据库和分配用户,从未遇到过问题.为什么我无法在root用户登录时将用户分配给root创建的数据库?
ps来自其他帖子,我认为这个问题可能是由于一些奇怪的用户引起的
select host, user from mysql.user;
Run Code Online (Sandbox Code Playgroud)
有些用户我还没有添加但确实出现了:
MY_COMPuTER_name.local | ''
MY_COMPuTER_name.local | root
Run Code Online (Sandbox Code Playgroud)
我试图删除这些用户
drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';
Run Code Online (Sandbox Code Playgroud)
但是,虽然它表明查询运行成功,但即使在刷新权限之后也不会删除用户.为什么我无法删除用户?任何帮助都很有用
Ama*_*ian 43
首先,确定您登录的用户:
select user();
select current_user();
Run Code Online (Sandbox Code Playgroud)
第一个命令的结果是您尝试登录的结果,第二个命令是您实际连接的结果.确认您已root@localhost在mysql 中登录.
Grant_priv到root@localhost.这是你如何检查.
mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| host | user | password | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root | ***************************************** | N | Y |
| localhost | debian-sys-maint | ***************************************** | Y | Y |
| localhost | staging | ***************************************** | N | N |
+-----------+------------------+-------------------------------------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)
您可以看到root @ localhost的Grant_priv设置为N. 这需要是Y.以下是如何解决这个问题:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
Run Code Online (Sandbox Code Playgroud)
我重新登录,很好.
| 归档时间: |
|
| 查看次数: |
97349 次 |
| 最近记录: |