mysql 出现1290错误怎么办

1. 什么是1290错误

MySQL中1290错误是指“超级用户自举违规”,通常出现在当您试图更改包含全局变量的MySQL配置时。

当您使用SET GLOBAL命令将super_read_only设置为OFF值时,可能会遇到这个错误。

2. 解决1290错误的方法

2.1 使用SET PERSIST命令

SET PERSIST命令是一种适用于MySQL8.0版本及以上的命令。它可以用于更改全局变量,而无需使用SUPER权限,将变量的值设置在MySQL服务的永久存储中。

使用SET PERSIST super_read_only=0;命令可以关闭super_read_only,从而消除1290错误。

需要注意的是,一旦使用SET PERSIST命令设置全局变量,就不需要再次设置变量,因为MySQL会记住该选项的值。

2.2 修改my.cnf配置文件

另一种消除1290错误的方法是直接修改MySQL的配置文件my.cnf

在该文件中,找到包含super_read_only变量的行,将该行的值更改为0,然后重启MySQL服务。

#在my.cnf文件中将super_read_only的值设置为0

[mysqld]

super_read_only=0

2.3 关闭MySQL服务后,使用mysqld参数启动MySQL服务

您也可以先关闭MySQL服务,然后用一个特殊参数启动它,以在没有SUPER权限的情况下设置全局变量。

使用以下命令关闭MySQL服务:

sudo systemctl stop mysql

在MySQL关闭后,以以下任一方式启动MySQL服务:

#使用--skip-grant-tables选项启动MySQL服务

sudo mysqld --skip-grant-tables &

#使用--user=root选项启动MySQL服务

sudo mysqld --user=root &

您可以通过以下任一方式更改全局变量:

#使用SET命令更改全局变量

SET GLOBAL super_read_only=0;

#使用UPDATE语句更改mysql系统表中的全局变量值

UPDATE mysql.global_variables SET variable_value=0 WHERE variable_name='super_read_only';

注意,在以这种方式启动MySQL服务后,不应将MySQL暴露在外部网络上,因为它可能会影响与MySQL进行的任何交互。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签