Docker 安装Mysql
Docker 安装 Mysql
使用root用户操作
1、拉取官方的最新版本的镜像
docker pull mysql
2、创建主机挂载配置目录
data目录存放mongodb数据库文件,删除重启容器不会丢失
mkdir -p /opt/dockerdata/mysql/data
mkdir -p /opt/dockerdata/mysql/log
mkdir -p /opt/dockerdata/mysql/conf
3、创建MySQL8配置文件
vi /opt/dockerdata/mysql/conf/my.cnf
[client]
default-character-set = utf8mb4
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Custom config should go here
# 字符集
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 是否对sql语句大小写敏感,0:大小写敏感,1:忽略大小写区别。,只能在初始化服务器时配置。禁止在服务器初始化后更改
# 设置为2时,表名和数据库名按声明存储,但以小写形式进行比较
lower_case_table_names = 2
# 最大连接数
max_connections = 1000
# Innodb缓存池大小
innodb_buffer_pool_size = 4G
# 表文件描述符的缓存大小
table_open_cache_instances=1
table_open_cache=2000
table_definition_cache=2000
!includedir /etc/mysql/conf.d/
4、docker 启动 mysql
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /opt/dockerdata/mysql/log:/var/log/mysql \
-v /opt/dockerdata/mysql/data:/var/lib/mysql \
-v /opt/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
命令说明:
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /opt/dockerdata/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /opt/dockerdata/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /opt/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest。
5、配置远程连接和更改密码
docker exec -it mysql /bin/bash
登录MySQL
mysql -u root -p
输入密码
开始执行sql
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
FLUSH PRIVILEGES;
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
select host, user, plugin, authentication_string, password_expired from user;
exit
参考
https://blog.csdn.net/qq_42971035/article/details/127831101(有问题)
配置参考
https://blog.51cto.com/mshxuyi/5857795
https://developer.aliyun.com/article/791251