我在MySQL数据库中以root用户身份登录。我尝试运行以下命令:
mysql> GRANT ALL ON *.* TO 'root'@'%'
-> IDENTIFIED BY '[password]'
-> WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql>
我收到以下错误:
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
我假设我的root用户没有正确设置。有什么想法吗?
修改
mysql> show grants for root
-> ;
+-----------------------------------------------------------------------------------------------------+
| Grants for root@% |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*738393F115A47ACE272D98F4719B8491A2B8296F' |
| GRANT ALL PRIVILEGES ON `sometable`.* TO 'root'@'%' WITH GRANT OPTION |
| GRANT ALL PRIVILEGES ON `Test`.* TO 'root'@'%' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
答案 0 :(得分:3)
您可能使用名为root的帐户登录数据库,但您所在的帐户没有正确的权限。
mysql> select user();
然后用:
跟进mysql> select * from mysql.user\G
查找与输出完全匹配的用户和主机列。寻找 grant_priv ,它需要说 Y 。很可能还有没有grant_priv的其他root帐户。
mysql> select * from mysql.user\G
*************************** 1. row ***************************
Host: localhost
User: root
Password: xxxxxxxxxxxxxxx
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
答案 1 :(得分:0)
当我从mysql.user \ G命令输入select *时,我得到:ERROR 1142(42000):SELECT命令被拒绝用户'root'@'localhost'用于表'user'错误:没有指定查询
这表示您未以'root'@'%'
身份登录。您以“root”@“localhost”身份登录,这是两个不同的用户。如果您按上述方式运行SELECT USER();
,则可能会显示'root'@'localhost'.
如果您以'root'@'localhost'
身份登录,则表示您是通过本地套接字登录的。通过TCP连接登录将使您以'root'@'%'
进行访问,这将使您可以根据最初列出的输出访问更改授权。为此,请使用以下命令登录:
mysql -u $user -p $pass -h 127.0.0.1