docker pull mysql:5.7.40
sudo mkdir -p /opt/docker_data/mysql/5.7.40/{conf,data,log}
sudo chmod -R 755 /opt/docker_data/mysql/5.7.40
vi /opt/docker_data/mysql/5.7.40/conf/custom.cnf
内容如下
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 字符集配置
init_connect="SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
# 网络与解析
skip-name-resolve
explicit_defaults_for_timestamp=true
# 表名大小写
lower_case_table_names=1
# SQL模式(MySQL 5.7适用)
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# InnoDB配置优化
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
# 连接配置
max_connections = 200
wait_timeout = 600
interactive_timeout = 600
# 通用配置
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
bind-address = 0.0.0.0
docker run --name mysql_5.7.40 \
-v /opt/docker_data/mysql/5.7.40/log:/var/log/mysql \
-v /opt/docker_data/mysql/5.7.40/data:/var/lib/mysql \
-v /opt/docker_data/mysql/5.7.40/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.40
安装完成后直接登录会提示错误
先进入容器
docker exec -it mysql_5.7.40 /bin/bash
连接mysql
mysql -u root -p
查询当前用户
SELECT user, host FROM mysql.user WHERE user = 'root';
结果如下
这里如果没有user=root和host=%的用户,则运行如下命令
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
如果有的话直接执行
GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
再刷新一下权限即可
FLUSH PRIVILEGES;