如何在 MySQL 8 的 my.cnf 中设置 sql_mode? |


本站和网页 https://qa.1r1g.com/sf/ask/3780547711/ 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

如何在 MySQL 8 的 my.cnf 中设置 sql_mode? |
那些遇到过的问题
Linux
C++
Python
Vue.js
Nginx
SQL
NoSQL
kubernetes
如何在 MySQL 8 的 my.cnf 中设置 sql_mode?
Ray*_*yCh
16
mysql
sql-mode
mysql-8.0
我正在运行 MySQL 8.0.11 社区版。我需要在 my.cnf 中设置 sql_mode 以排除 ONLY_FULL_GROUP_BY 以便它重新启动安全。我尝试了以下变体:
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_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
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-mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
无论变量名为“sql_mode”还是“sql-mode”,它们都以相同的方式失败:
mysqld --verbose --help | grep "sql[-_]mode"
2018-06-19T15:22:51.667734Z 0 [ERROR] [MY-011071] [Server] /usr/sbin/mysqld: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'
--sql-mode=name Syntax: sql-mode=mode[,mode[,mode...]]. See the manual
2018-06-19T15:22:51.675498Z 0 [ERROR] [MY-010119] [Server] Aborting
sql模式
看起来mysqld 处理my.cnf 并将'sql_mode' 或'sql-mode' 转换为'sql_mode',然后它拒绝!
问题是如何解决这个问题?
Bil*_*win
34
SQL 模式NO_AUTO_CREATE_USER在 MySQL 8.0 中被删除,不再被识别。
https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-deprecations说:
删除了以下与帐户管理相关的功能:
使用GRANT创建用户。相反,使用CREATE USER. 遵循这种做法会使NO_AUTO_CREATE_USERSQL 模式对GRANT语句变得无关紧要
,因此也将其删除。
将您的 sql_mode 更改为“STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION”。我在我的 8.0.11 沙箱实例上测试了这个,它工作正常。
sql-mode 或 sql_mode 的拼写都可以。
使用引号或省略引号都可以。
Álv*_*lez
假设“重启安全”只是意味着永久,语法是:
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 模式,请在命令行或sql-mode="modes"my.cnf(Unix 操作系统)或 my.ini(Windows)等选项文件中使用 --sql-mode="modes" 选项。modes
是用逗号分隔的不同模式的列表。
如果它对您不起作用,则可能是您将其放在错误的部分下。对于需要的服务器设置[mysqld],如:
[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Dom*_*ico
步骤 1. 检查 sql 模式:
mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"
Step 2. 在/etc/mysql/conf.d/目录下新建配置文件:
sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
在编辑器中输入以下文本:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
步骤 3. 重启 MySQL:
sudo service mysql restart
步骤 4. 确认更改:
mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"
NO_AUTO_CREATE_USER SQL 模式已在 MySQL 8.0 中删除,请查看参考手册以获取SQL 模式的完整列表。
我可以确认这适用于 Ubuntu 20.04 和 MySQL 8.0。 (3认同)
归档时间:
3 年,11 月 前
查看次数:
21707 次
最近记录:
2 年 前
相关归档
使用MySQL查询查找和替换整个表中的文本 226
操作'='的非法混合排序(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT) 142
如何在Docker容器中使用模式初始化MySQL数据库? 141
LEFT JOIN仅第一行 125
jQuery UI可排序,然后将订单写入数据库 119
mysql:查看给定数据库的所有打开连接? 117
MySQL:计算行数的最快方法 109
MYSQL 5.7中的原生JSON支持:MYSQL中JSON数据类型的优缺点是什么? 96
MySQL中逗号分隔的连接和语法连接之间有什么区别? 86
如何编写REST API? 82
难疑归档
如何在JavaScript中检查"undefined"? 2294
JavaScript .prototype如何工作? 1988
如何分析在Linux上运行的C++代码? 1732
为什么将0.1f改为0会使性能降低10倍? 1491
你什么时候使用git rebase而不是git merge? 1461
如何将堆栈跟踪转换为字符串? 1435
如何克隆仅Git存储库的子目录? 1298
如何撤消"git commit --amend"而不是"git commit" 1198
PHP和枚举 1114
如何将参数传递给批处理文件? 1100
Copyright Info
© Copyright 2013-2021 admin@qa.1r1g.com
如未特别说明,本网站的内容使用如下协议:Creative Commons
Atution-NonCommercial-ShareAlike 4.0 International license.
用以下方式浏览
大分类
日期
标签
参考资料
qa.1r1g.com
www website
superuser
askubuntu
serverfault
dba
回到顶部
网安备44200002443738
粤ICP备19038133号