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

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

我对使用 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

如何关闭此选项?

答案1

答案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的普通模式然后无密码连接。

这肯定对你有用。

答案3

只需正常停止并重新启动 MySQL 即可。

答案4

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

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

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

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

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

sudo systemctl set-environment MYSQLD_OPTS=""

完成此操作后,我重新启动了 mysqld 服务sudo service mysql restart,一切正常。

相关内容