【问题标题】:How to find and disable MySQL strict mode?如何查找和禁用 MySQL 严格模式?
【发布时间】:2016-10-24 04:14:25
【问题描述】:

大家好,我想为 whmcs 找到这个 mysql 严格模式并禁用它,但我没有进展 我是新手,如果我不提其他事情,那就不好意思了 谁能帮我? 我正在开发 WHM/Cpanel

【问题讨论】:

    标签: mysql cpanel whmcs strict-mode


    【解决方案1】:

    我认为在最近的版本中更改 *.cnf 文件是不可能的 相反,您可以更改 mysql.service 文件

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

    【讨论】:

      【解决方案2】:

      首先,使用以下命令验证 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 重启后会重置
      【解决方案3】:

      我目前使用 MariaDB 和多 cpanel 配置运行 Centos 6.9 服务器,因此对于客户端,他们无法自行禁用严格,而不会出现缺少权限错误。这是您全局禁用它的方式:

      打开 SSH/Console 并验证当前模式:

      # 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】:

        从 cpanel 关闭(或打开)mysql 严格访问。

        1、搜索“phpmyadmin”,在搜索框中点击

        2,一旦加载了 phpmyadmin,点击“变量”选项卡

        3、搜索“sql模式”

        然后

        进入时开启严格模式

        STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
        

        要关闭严格模式,请输入

        NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
        

        如果您可以控制要使用的脚本,那么最好打开严格模式,它会在代码中的任何错误成为问题之前提醒您。

        【讨论】:

        • 在 cpanel 中,一天后,将返回更改并自动再次设置为默认值,所以我认为最好将 sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 放入 /etc/my.cnf 文件中作为这个答案:stackoverflow.com/a/47416442/1407491
        【解决方案5】:

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

        [例如:在 localhost 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 中的严格模式

        【讨论】:

        • sry 我找不到 my.ini 它在哪里?你能帮我吗?
        • 可以有my-default.ini 或以.ini 结尾的不同文件。在MYSQL安装目录中
        • 对不起,这里有超过100个ini文件
        • 这真的让我很紧张。我只有 Cpanel 访问权限。我怎么能找到那个?
        • 我从来没有在 CPanel/whms 上工作过。如果您可以访问 mysql 安装,您可以通过我提到的步骤轻松更改它。
        【解决方案6】:

        首先,要禁用 MySQL 严格模式,您需要服务器的 root 访问权限。如果你没有它,你就做不到。如果您只有 cPanel 访问权限,这意味着您不是此服务器的管理员,或者您没有 root 访问权限。

        要编辑你的 mysql 配置文件 my.cnf,你必须通过 SSH(使用 root 用户或 sudo 访问)访问你的服务器,然后编辑 /etc/my.cnf 文件并添加以下行(如果它不存在):

        [mysqld]

        sql_mode="TRADITIONAL,NO_AUTO_CREATE_USER"

        编辑此文件后,保存并重启mysql服务。同样,您需要对您的服务器具有完全的 root 访问权限才能更改此设置。

        【讨论】:

          猜你喜欢
          • 2021-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-03
          • 2019-01-29
          • 2021-03-09
          • 1970-01-01
          • 2014-01-01
          相关资源
          最近更新 更多