概述
一、拉取镜像
docker pull mysql:5.7
创建数据目录
mkdir /usr/local/dockerdata/mysql/conf
mkdir /usr/local/dockerdata/mysql/logs
mkdir /usr/local/dockerdata/mysql/mysql
二、创建配置文件
设置编码为utf8mb4
cd /usr/local/dockerdata/mysql/conf
vi my.cnf
需要手动添加上[client]和[mysql]。
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
default-time_zone = '+8:00' #默认时区配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#设置数据库支持分组
lower_case_table_names=1 #表名不区分大小写
设置utf8编码只需要在 [mysqld]后添加 character_set_server=utf8
三、运行镜像
docker run --restart always -p 33306:33306 --name mysql -v /usr/local/dockerdata/mysql/conf/my.conf:/etc/mysql/my.cnf -v /usr/local/dockerdata/mysql/logs:/logs -v /usr/local/dockerdata/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
四、进入镜像
docker exec -it mysql bash
五、 进入mysql
mysql -uroot -p
六、 设置远程可以登录
现在这样是无法在本地用工具登录访问的,现在要做两件事,一件事是将云服务器上的3306端口开放;另一件事是配置远程可以访问。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
解决Navicat连接docker中mysql容器10060/10061错误
1.关闭防火墙
stemctl status firewalld 查看防火墙状态
service iptables stop 永久关闭防火墙
systemctl stop firewalld 暂时关闭防火墙
2.指定容器内部端口为3306
因为我容器中有其他应用的端口用到3306所以这里改了,若容器内没有把3306端口占用
docker run --restart always -p 33306:3306 --name mysql -v /usr/local/dockerdata/mysql/conf/my.conf:/etc/mysql/my.cnf -v /usr/local/dockerdata/mysql/logs:/logs -v /usr/local/dockerdata/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
3.进入 mysql.conf 把bind-address去掉注释同时改为0.0.0.0,并且加上port=33306。再重启mysql容器就可以了。
最后
以上就是快乐水池为你收集整理的离线docker中安装mysql_docker容器中安装mysql5.7(详细图解)的全部内容,希望文章能够帮你解决离线docker中安装mysql_docker容器中安装mysql5.7(详细图解)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复