1- 拉取镜像- mysql
docker pull mysql:8.0.26
有的网络不通,只能换个空气。
sh mysqldockerstart.sh
启动 容器并运行mysql
mysqldockerstart.sh
#!/bin/bash
docker run -p 3306:3306 \
--name mysql \
--restart=always \
-d \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-v /mydata/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=baimei123 \
mysql:8.0.26
-d的目录不用 自己建立,会自动创建
root 密码 后期修改 只能通过 终端进入去修改。 不能在run 中修改
解释:
-p 指定在容器内部的端口 以及对外暴露的端口
--name 设置服务器名称
--restart 是否运行跟随docker一起启动
--network 容器之间内部通信网络
-v 挂载命令 将容器中的配置挂载在外部来方便修改
-d 指定版本
-e 指定root的密码
上边的脚本运行一次就可以, 下次直接 docker start mysql
如果修改了 脚本, 那么需要 删除:
docker container rm mysql
docker run -p ip:hostPort:containerPort # -p 的作用
2-停止:
docker stop mysql
3-进入容器:
docker exec -it mysql /bin/bash
4-修改配置文件
cd /mydata/mysql/conf
新建以下内容 vi my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启mysql服务 使其配置生效
docker restart mysql
5-设置docker启动时就运行mysql
docker update mysql --restart=always
6-.授权远程访问
/ 先进入容器内部
docker exec -it mysql /bin/bash
// 进入mysql
mysql -u root -p
#如果出现异常:(初始密码不成功,密码默认为空,直接Enter)保证进入到mysql命令行。
重新设置密码; 退出mysql 命令行执行
mysqladmin password 'baimei123'
// 进入mysql库中
use mysql;
// 查询库中的账号和允许连接的host
select user,host from mysql.user;
/ 给root 用户授权所有的权限以及能访问的ip
use mysql
update user set host='%' where user='root';
flush privileges;
grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
// 刷新权限生效
flush privileges;
由于Mysql5.6以上的版本修改了Password算法,这里需要更新密码算法,便于使用Navicat连接
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'baimei123';
FLUSH PRIVILEGES;
msyql8 docker : https://blog.csdn.net/a1150499208/article/details/131437199
mysql 5.7 docker : https://zhuanlan.zhihu.com/p/385487767?utm_id=0