关于2个mysql报错
1 报错: Host ‘127.0.0.1’ is not allowed to connect to this MySQL server
vi /etc/my.cnf
注释掉: #skip-name-resolve
2 报错:Access denied for user 'root'@'localhost' (using password: YES)
在使用MySQL数据库时,root用户是最高权限的管理员账户。如果您忘记了root用户的密码,那么您将无法登录到MySQL数据库并进行任何管理操作。但是,不要担心,MySQL提供了几种方法来重置root密码,本文将向您介绍其中的几种方法。
方法一:使用mysqladmin重置密码
这种方法适用于您在MySQL服务器上拥有root账户的管理员权限。下面是重置root密码的步骤:
- 停止MySQL服务
$ sudo systemctl stop mysql
- 使用mysqld_safe命令启动MySQL服务,并跳过权限检查
$ sudo mysqld_safe --skip-grant-tables &
- 连接到MySQL服务器,并使用mysqladmin命令重置密码
$ mysql -u root
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
这里,'new_password' 是您要设置的新密码,您可以根据需要进行修改。此命令将修改root用户在本地MySQL服务器上的密码。
- 退出MySQL服务器,并停止MySQL服务
mysql> exit
$ sudo systemctl stop mysql
- 启动MySQL服务
$ sudo systemctl start mysql
现在,您可以使用新密码重新登录root用户。
方法二:使用mysqld重新设置root密码
这种方法适用于您在MySQL服务器上没有root管理员权限,但您具有物理访问权限。下面是重置root密码的步骤:
- 停止MySQL服务
$ sudo systemctl stop mysql
- 使用mysqld_safe命令启动MySQL服务,并跳过权限检查
$ sudo mysqld_safe --skip-grant-tables &
- 连接到MySQL服务器,并创建一个新的临时用户,该用户拥有root权限
$ mysql -u root
mysql> FLUSH PRIVILEGES;
mysql> CREATE USER 'temp_root'@'localhost' IDENTIFIED BY 'temp_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'temp_root'@'localhost' WITH GRANT OPTION;
mysql> exit
- 重新启动MySQL服务,并使用新的临时root用户登录MySQL服务器
$ sudo systemctl start mysql
$ mysql -u temp_root -p
- 使用ALTER命令修改root用户密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
这里,'new_password' 是您要设置的新密码,您可以根据需要进行修改。此命令将修改root用户在本地MySQL服务器上的密码。
- 退出MySQL服务器,并停止MySQL服务
mysql> exit
$ sudo systemctl stop mysql
- 删除临时用户
$ sudo mysqld_safe --skip-grant-tables &
$ mysql -u root
mysql> FLUSH PRIVILEGES;
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'temp_root'@'localhost';
mysql> DROP USER 'temp_root'@'localhost';
mysql> exit
- 重新启动MySQL服务
$ sudo systemctl start mysql
现在,您可以使用新密码重新登录root用户。
方法三:使用MySQL安全性模式重置密码
如果您无法使用上述两种方法,您可以尝试使用MySQL安全性模式重置密码。这种方法通常用于无法正常启动MySQL服务器的情况。下面是重置root密码的步骤:
- 停止MySQL服务
$ sudo systemctl stop mysql
- 启动MySQL安全性模式
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
- 使用新的命令行终端连接到MySQL服务器
$ mysql -u root
- 修改root用户密码
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
这里,'new_password' 是您要设置的新密码,您可以根据需要进行修改。此命令将修改root用户在本地MySQL服务器上的密码。
- 退出MySQL服务器
mysql> exit
- 停止MySQL安全性模式
$ sudo killall mysqld_safe
- 启动MySQL服务
$ sudo systemctl start mysql
现在,您可以使用新密码重新登录root用户。
以上是三种重置MySQL root密码的方法。每种方法都有其适用的情况,您可以根据您的具体情况选择合适的方法。无论您选择哪种方法,请务必在重置密码后及时删除临时用户并启动MySQL服务。