在MySQL中关闭--skip-grant-tables


13

我对使用Linux很陌生,但是正在Amazon ec2实例上设置MySQL数据库。我遵循找到的有关使用--skip-grant-tablesMySQL选项重置用户登录密码的说明。现在,我正在尝试添加一个用户,但不知道如何关闭该选项。

这就是我想要做的:

mysql> GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON ...my db username and pass

但是我得到这个错误:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

如何关闭此选项?

Answers:




2

您可以使用以下步骤完成此操作。

[root@backups1 mysql5.7]# bin/mysqld_safe --skip-grant-tables --user=mysql

连接到您的MySQL没有密码。

mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;

切换到mysql的普通模式,然后无密码连接。

这肯定会为您工作。


0

昨天我遇到了类似的问题。该服务器使用Amazon Linux 2作为操作系统,并使用正式的yum存储库(el7存储库)作为安装方式。

特别是当您使用官方yum repo的MySQL时,MySQL将作为系统服务安装。在这种情况下,你可以检查MySQL如何处理是通过执行以下命令启动:sudo service mysql status -l。这将导致描述当前mysql服务的当前状态。在这些描述中,我可以找到以下行:

  Process: 26474 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS

在我的环境中,事实证明,该MYSQLD_OPTS变量是--skip-grant-tables由systemd进程使用value 选项设置的。要确认systemd设置的环境变量,您可以执行sudo systemctl show并查找以开头的行Environment=

要更改此环境变量,我执行了以下命令。

sudo systemctl set-environment MYSQLD_OPTS=""

完成此操作后,我通过启动了mysqld服务sudo service mysql restart,一切运行正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.