docker容器中安装mysql5.7(详细图解)

一、拉取镜像

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容器中安装mysql5.7(详细图解))