我不断收到此错误。
我正在使用 mySQL Workbench,我发现 root 的架构权限为空。根本没有任何特权。
我在使用我的服务器的各个平台上遇到问题,而且这是一个突然出现的问题。
[电子邮件受保护]显然有很多访问权限,但我是这样登录的,但它只是分配给本地主机 - 本地主机没有特权。
我做了一些事情,例如
FLUSH HOSTS
,FLUSH PRIVILEGES
等
但没有从那里或互联网上找到成功。
如何才能恢复 root 访问权限?我觉得这很令人沮丧,因为当我环顾四周时,人们希望你“有访问权限”,但我没有访问权限,所以我无法进入命令行或任何东西,
GRANT
我自己也无法进行任何操作。
跑步时
SHOW GRANTS FOR root
这就是我得到的回报:
错误代码:1141。没有为用户“root”定义此类授权 主机'%'
如果您在 MySql 5.7.+ 中遇到同样的问题:
Access denied for user 'root'@'localhost'
这是因为MySql 5.7默认允许使用socket连接,这意味着你只需使用
sudo mysql
连接即可。如果你运行 sql :
SELECT user,authentication_string,plugin,host FROM mysql.user;
然后你就会看到它:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
要允许使用 root 和密码连接,然后使用命令更新表中的值:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;
然后再次运行 select 命令,你会看到它已经改变了:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
就是这样。您可以在运行并完成
sudo mysql_secure_installation
命令后运行此过程。
对于 mariadb,请使用
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');
设置密码。 更多信息请访问 https://mariadb.com/kb/en/set-password/
使用 重置 root 密码的说明 - 但我们不会重置 root 密码,而是将强制将一条记录插入 mysql.user 表中
在初始化文件中,使用这个代替
INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
它不喜欢我的用户权限,所以我须做它。 (在bash中<< sudo set user and password) (this gives username of root and sets the password to nothing) (On Mac)
sudo mysql -uroot -p
尝试以下命令
~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql> use mysql;
mysql> update user set password=PASSWORD("root") where User='root';
mysql> flush privileges;
mysql> quit
~$ sudo /etc/init.d/mysql stop
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
~$ sudo /etc/init.d/mysql start
~$ mysql -u root -p
* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
对于在 mysql 5.7+ 版本中面临以下错误的人 -
Access denied for user 'root'@'localhost' (using password: YES)
打开新终端
sudo /etc/init.d/mysql stop
...
MySQL 社区服务器 5.7.8-rc 已停止sudo mysqld_safe --skip-grant-tables &
这将跳过所有授予级别的权限并以安全模式启动 mysql
有时过程会因为grep:写入错误:管道损坏 180102 11:32:28 mysqld_safe 记录到“/var/log/mysql/error.log”。
只需按 Ctrl+Z 或 Ctrl+C 即可中断并退出进程
mysql -u root
欢迎使用 MySQL 监视器。 命令以 ; 结尾或\g。 你的 MySQL 连接 ID 是 2 服务器版本:5.7.8-rc MySQL 社区服务器(GPL)
版权所有 (c) 2000、2015,Oracle 和/或其附属公司。保留所有权利。
Oracle 是 Oracle Corporation 和/或其公司的注册商标 附属机构。其他名称可能是其各自的商标 业主。
输入“帮助”;或“\h”寻求帮助。类型