更新日志:
- [2021-07-15]
文章发布
说明:
- 本文地址
- 《【Docker】— MySQL服务安装和基本配置》https://blog.csdn.net/maixiaochai/article/details/118754644
- 关于 MaiXiaochai
- CSDN:https://blog.csdn.net/maixiaochai
- GitHub:https://github.com/MaiXiaochai
mkdir -p \ /data/dockerData/mysql/logs \ /data/dockerData/mysql/data \ /data/dockerData/mysql/conf
cd /data/dockerData/mysql/conf && vim my.cnf
,填写以下内容后保存退出[mysqld] # 服务端字符集 character-set-server=utf8 # 日志超期时间,或者说是保存几天的日志 expire_logs_days=7 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections=50 pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql # null 表示限制mysqld不允许导入|导出 secure-file-priv= NULL # 禁用符号链接以防止各种安全风险 symbolic-links=0 # 自定义配置文件存放位置,其实这个没有用到,因为会报目录深度达到最大限制而取消的warning !includedir /etc/mysql/conf.d [client] # 客户端字符集 default-character-set=utf8
MySQL
服务docker run --restart=always \ --network mysql_bridge \ -p 3306:3306 \ --name mysql \ -v /data/dockerData/mysql/logs:/var/log/mysql \ -v /data/dockerData/mysql/data:/var/lib/mysql \ -v /data/dockerData/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -e MYSQL_ROOT_PASSWORD=maixiaochai \ -d mysql:8.0.25
--restart
:容器重启策略,always
表示容器一停止就重启,还有以下几种策略
no
,默认策略,在容器退出时不重启容器on-failure
,在容器非正常退出时(退出状态非0),才会重启容器on-failure:3
,在容器非正常退出时重启容器,最多重启3次unless-stopped
,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器--network
:使用特定的网桥,需要提前用docker network create mysql_bridge
进行创建。也可以不使用次参数,这时候使用的是默认网桥-p
:绑定端口,宿主机端口:容器端口--name
:容器的新名字,起一个名字好辨别,命令上也操作简单-v
:(数据卷)目录映射,宿主机目录:容器目录,也可以映射文件-文件-e
:给容器传递的环境变量参数,这里设置了MySQL
root
用户的密码。不同容器的所需环境变量参数不同,注意看相关容器下的说明-d
,容器在后台运行docker ps
status
这一列如果是up 后边跟时间,说明是正常运行的。如果是restarting(x)
或者其它状态,说明容器运行是有问题的,需要对症下药了。MySQL8.x
的基本配置不同版本MySQL
的内部配置方法略有不同,需对症下药
docker exec -it mysql bash
,以命令行方式与容器交互,可以理解为进入了容器的命令行 MySQL
,mysql -u root -p
,然后根据提示输入环境变量中设置的密码即可
MySQL8.0.25
默认是支持root
用户远程和本地登录的,所以,root
用户的远程登录不用设置create database db_mxc;
create user spider@'%' identified with caching_sha2_password by 'maixiaochai' password expire never;
@'%'
:表示所有地址都能以该账户访问MySQL
with caching_sha2_password
: 使用caching_sha2_password
这种插件加密密码
host
)
select user,host,authentication_string, plugin from mysql.user;
password expire never
,密码永不过期db_mxc
库的权限,grant all on db_mxc.* to spider@'%';
flush privileges;
host
下的权限(被执行的授权语句)
show grants for spider@'%';