我对使用 Linux 还很陌生,但正在 Amazon ec2 实例上设置 MySQL 数据库。我遵循了一些关于使用--skip-grant-tables
MySQL 选项重置用户登录密码的指示。现在我正在尝试添加用户,但不知道如何关闭该选项。
这就是我想做的:
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
登录mysql
mysql -u root -p
然后执行:
FLUSH PRIVILEGES;
http://dev.mysql.com/doc/refman/5.0/en/server-options.html http://dev.mysql.com/doc/refman/5.0/en/mysqladmin.html
答案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
,一切正常。