1、挂载
mysql:
# 容器名(以后的控制都通过这个)
container_name: mysql
# 重启策略
restart: always
image: mysql:8
ports:
- "3306:3306"
volumes:
# 挂挂载配置文件
# - ./mysql/db/:/docker-entrypoint-initdb.d
# 挂挂载配置文件
- ./mysql/conf:/etc/mysql/conf.d
# 挂载日志
- ./mysql/logs:/var/log/mysql
# 挂载数据
- ./mysql/data:/var/lib/mysql
#- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mysql/sql/*.sql:/docker-entrypoint-initdb.d/
command: [
'mysqld',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
environment:
# root 密码
MYSQL_ROOT_PASSWORD: 123
2、设置配置文件 ./mysql/conf
vim my.cnf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
3、mysql的一些问题
mysql5.7以上默认开启了only_full_group_by选项,无法使用分组。我的版本是mysql8.0以上的
进入文件夹找到自己的my.cnf配置文件,修改[mysqld]中的内容,添加下面的内容就可以
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
错误:
增加sql_mode配置,启动时出现下面错误
[ERROR] [MY-000077] [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'.
如何解决:8.0以上已经取消了 NO_AUTO_CREATE_USER 这个关键字,在mysql.ini/my.cnf中的sql_mode中删掉这个关键字即可