如何查找和禁用MySQL的严格模式?

17

大家好,我想找到 WHMCS 中的 MySQL 严格模式并将其禁用,但是我没有进展。

由于我是新手,如果没有提及其他事项,请见谅。

有人能帮助我吗?我正在使用 WHM/Cpanel。

6个回答

23

通过cPanel关闭(或打开)mysql的严格访问。

1. 搜索“phpmyadmin”,在搜索框中点击它。

2. 一旦phpmyadmin加载完成,点击“variables”选项卡。

3. 搜索“sql mode”。

然后

要启用严格模式,请输入:

STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

要关闭严格模式,请输入以下内容:

to turn strict mode off, enter

NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如果您可以控制您将使用的脚本,那么最好将严格模式保留,它会在问题变得更加严重之前向您发出警报,以便发现代码中的任何错误。


5
在cpanel中,一天后更改将自动返回默认值,因此我认为最好将sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION放入/etc/my.cnf文件中,就像这个答案所示:https://dev59.com/1VoT5IYBdhLWcg3w-DO6#47416442 - Nabi K.A.Z.

12

我目前在运行一个装有MariaDB和多个cpanel配置的Centos 6.9服务器,因此对于客户而言,他们无法在不出现权限错误的情况下自行禁用strict模式。以下是如何全局禁用它:

打开SSH /控制台并验证当前模式:

# mysql -e "SELECT @@sql_mode;"

+----------------------------------------------------------------------+
| @@sql_mode                                                           |
+----------------------------------------------------------------------+
|STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, |
|NO_ENGINE_SUBSTITUTION                                                |
+----------------------------------------------------------------------+

定位并编辑"my.cnf"文件

vim /etc/my.cnf

查找并更改以下内容,如果不存在则添加该行

启用 严格模式

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

严格模式禁用:

sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重新启动MySQL服务

/etc/init.d/mysql restart

验证已禁用严格模式:

# mysql -e "SELECT @@sql_mode;"

+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+

完成了 :)


4
首先,要禁用MySQL的严格模式,您需要服务器的root访问权限。如果您没有它,您将无法执行此操作。如果您只有cPanel访问权限,这意味着您不是此服务器的管理员或您没有root访问权限。
要编辑您的mysql配置文件my.cnf,您将需要通过SSH访问服务器(使用root用户或sudo访问权限),然后编辑/etc/my.cnf文件,并添加以下行(如果不存在):
[mysqld]
sql_mode="TRADITIONAL,NO_AUTO_CREATE_USER"
编辑此文件后,请保存并重新启动mysql服务。再次强调,您需要完整的根访问权限才能更改此设置。

1

我认为在最新版本中无法更改*.cnf文件,相反,您可以更改mysql.service文件

/lib/systemd/system/mysql.service
ExecStart=/usr/sbin/mysqld --sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

0

打开my-default.ini文件并从sql_mode值中删除STRICT_TRANS_TABLES参数。

[例如:在本地主机xampp上,该文件位于xampp/mysql/my-default.ini]

sql_mode的默认值如下

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

将其更改为

 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

这将禁用MYSQL的严格模式


1
抱歉,我找不到my.ini文件在哪里?你能帮我吗? - Hamed Atae
MYSQL安装目录中可能会有my-default.ini或以.ini结尾的不同文件。 - Shirishkumar Bari
抱歉,这里有100多个ini文件。 - Hamed Atae
这真的让我很恼火。我只有Cpanel访问权限。我该如何找到它? - Hamed Atae
我从未使用过CPanel/whms。如果您可以访问mysql安装,您可以按照我提供的步骤轻松更改它。 - Shirishkumar Bari

0

首先,使用以下命令验证MYSQL正在运行的模式:

 mysql -u root -p -e "SHOW VARIABLES LIKE 'sql_mode';"

您需要将root替换为在服务器上拥有超级用户权限的用户名(但通常只是root)。您还需要输入密码。

通过SQL命令行禁用严格模式:

您可以通过在命令行上运行以下命令来禁用MySQL服务器上的严格模式:

mysql -u root -p -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';"

这将在mysql重启时被重置。 - Lajos Mészáros

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接