我以前在 MySQL 中访问 root 用户就好了。但最近,我再也不能了。
我可以正常登录:
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
这是登录后的mysql状态:
mysql> status
--------------
mysql Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (i686) using readline 6.2
Connection id: 37
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 4 min 16 sec
Threads: 1 Questions: 112 Slow queries: 0 Opens: 191
Flush tables: 1 Open tables: 6 Queries per second avg: 0.437
--------------
Run Code Online (Sandbox Code Playgroud)
但是当我想做任何动作时,例如:
mysql> CREATE DATABASE moyennegenerale;
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'moyennegenerale'
Run Code Online (Sandbox Code Playgroud)
我知道%
用于表示任何主机,但我的状态清楚地表明 localhost。有人知道可能会发生什么吗?
Rol*_*DBA 19
我想你有匿名用户
尝试运行这个:
SELECT user,host,password FROM mysql.user WHERE user='';
Run Code Online (Sandbox Code Playgroud)
这将显示存在哪些匿名用户。很可能,您会看到一行包含空白用户、主机%
和空白密码,如下所示:
mysql> select user,host,password from mysql.user;
+-----------+-------------+-------------------------------------------+
| user | host | password |
+-----------+-------------+-------------------------------------------+
| lwdba | 127.0.0.1 | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| lwdba | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| lwdba | % | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| root | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| root | 127.0.0.1 | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| vanilla | localhost | |
| mywife | % | |
| | % | | <<<--- LOOK !!!
| replicant | 10.64.113.% | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| kumar | % | |
+-----------+-------------+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
那么,你是如何登录的?运行此查询:
SELECT USER(),CURRENT_USER();
Run Code Online (Sandbox Code Playgroud)
第二个函数CURRENT_USER()
揭示了如何使用匿名用户登录。
请运行
SHOW GRANTS;
Run Code Online (Sandbox Code Playgroud)
这将揭示您在登录时拥有的权限。您被阻止创建数据库的事实表明您不是 root 用户,而是某个权限较低的用户。
请清理您的用户授权。
Feb 17, 2012
: MySQL : 为什么在 mysql.db 中有“test”条目?Feb 17, 2012
: mysql.db 表是干什么用的?Jan 18, 2012
:MySQL 错误:用户 'a'@'localhost' 的访问被拒绝(使用密码:是)至于重置root密码,请执行以下操作:
echo "SET PASSWORD FOR root@localhost=PASSWORD('password');" > /var/lib/mysql/rootpwd.sql
service mysql restart
rm -f /var/lib/mysql/rootpwd.sql
Run Code Online (Sandbox Code Playgroud)
我从@ShlomiNoach学到了这种有效的方法。
试一试 !!!
小智 12
我知道你做了什么。
做这个:
SELECT `User`, `Grant_priv` FROM `mysql`.`user` WHERE `User` = 'root';
Run Code Online (Sandbox Code Playgroud)
您可能会注意到它为 Grant_priv 返回了一个“N”。所以这样做:
UPDATE `mysql`.`user` SET `Grant_priv` = 'Y' WHERE `User` = 'root';
FLUSH PRIVILEGES;
SELECT `User`, `Grant_priv` FROM `mysql`.`user`;
Run Code Online (Sandbox Code Playgroud)
还有瓦拉!希望有帮助。
小智 5
以root
用户身份输入后,检查您的权限:
mysql> show grants for 'root'@'localhost';
Run Code Online (Sandbox Code Playgroud)
检查您的权限后,您可以尝试授予另一个用户所有权限,或者您可以再次尝试授予该root
用户所有权限:
mysql> grant all privileges on *.* to 'root'@'localhost';
Run Code Online (Sandbox Code Playgroud)
如果您的root
用户没有权限,您可以尝试恢复它们,因此:
停止mysqld
服务器
以这种方式重启服务器 mysqld_safe --skip-grant-table
恢复root
特权:
mysql> flush privileges;
mysql> grant all privileges on *.* to 'root'@'localhost' with grant option;
Run Code Online (Sandbox Code Playgroud)
小智 0
你的特权可能会减少?
另外,您可以尝试创建另一个具有 root 权限的帐户。
并删除root用户,并以指定权限重新创建。
这可能会有所帮助: http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html
C.5.4.1.2 - LINUX(使用查询创建文件,具有完全 root 权限的新用户)
C.5.4.1.1 - Windows(使用查询创建文件,具有完全 root 权限的新用户)
查询:(创建root用户)
CREATE USER 'new_root'@'%' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON *.* TO 'new_root'@'%' IDENTIFIED BY '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Run Code Online (Sandbox Code Playgroud)
MySQL手动创建用户: http://dev.mysql.com/doc/refman/5.5/en/adding-users.html
归档时间: |
|
查看次数: |
177785 次 |
最近记录: |