報錯: [Warning] World-writable config file '/etc/my.cnf' is ignored. 修改my.cnf不生效

mysql5.7中的sql_mode含有only_full_group_by,sql語句中含有g(shù)roupby時,只能獲取受到影響的字段信息,無法和其它未受影響的字段共存,這樣之前老項目里有很多不規(guī)范的語法,改起來太麻煩,所以只能關(guān)閉only_full_group_by模式。

1.確認sql_mode的值

select @@sql_mode;

mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

可以看到查出來的值里有ONLY_FULL_GROUP_BY

2.去掉ONLY_FULL_GROUP_BY,重新設置新值

set @@sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

這種通過sql語句設置的sql_mode值只是臨時的,如果mysql重啟后則會又開啟ONLY_FULL_GROUP_BY

永久生效需要修改my.cnf(windows下是my.ini)配置文件,把sql_mode設置成正確的

root@localhost:/xiannv/mysql/conf# cat my.cnf 
[mysqld]
user=mysql                     # MySQL啟動用戶
default-storage-engine=INNODB  # 創(chuàng)建新表時將使用的默認存儲引擎
character-set-server=utf8      # 設置mysql服務端默認字符集
pid-file        = /var/run/mysqld/mysqld.pid  # pid文件所在目錄
socket          = /var/run/mysqld/mysqld.sock # 用于本地連接的socket套接字
datadir         = /var/lib/mysql              # 數(shù)據(jù)文件存放的目錄
log-error      = /var/log/mysql/error.log
#bind-address   = 127.0.0.1                   # MySQL綁定IP
expire_logs_days=7                            # 定義清除過期日志的時間(這里設置為7天)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # 定義mysql應該支持的sql語法,數(shù)據(jù)校驗等!


# 允許最大連接數(shù)
max_connections=200

# ================= ↓↓↓ mysql主從同步配置start ↓↓↓ =================
# 同一局域網(wǎng)內(nèi)注意要唯一
server-id=1
# 開啟二進制日志功能
log-bin=mysql-bin
# ================= ↑↑↑ mysql主從同步配置end ↑↑↑ =================

[client]
default-character-set=utf8  # 設置mysql客戶端默認字符集

3.保存重啟

重啟發(fā)現(xiàn)ONLY_FULL_GROUP_BY模式仍然為開啟狀態(tài),看日志后發(fā)現(xiàn)如下提示:

image.png

大概意思就是說權(quán)限是全局可寫的,太高了,mysql對這種文件有保護機制,防止被其他用戶惡意修改,所以給忽略掉了,導致my.cnf文件根本沒生效,所以必須要修改權(quán)限才行

chmod 644 my.cnf

重啟后發(fā)現(xiàn)問題解決

mysql> select @@sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                         |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容