1:安装mysql,查看镜像是否安装成功
[root@whale ~]# docker pull mysql:8.0.23 #安装mysql
[root@whale ~]# docker images #出现mysql表示安装成功
2:创建配置文件
[root@whale ~]# mkdir -p /usr/mysql/conf /usr/mysql/data
[root@whale ~]# chmod -R 755 /usr/mysql/
[root@whale ~]# vim /usr/mysql/conf/my.cnf
在my.cnf中写入以下内容:
[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
datadir = /usr/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
3:启动创建容器
docker run --restart=unless-stopped -d --name mysql1 -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql/data:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.23
参数解释:
-d --name mysql1 #指定数据库名
-v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf #指定配置文件
-v /usr/mysql/data:/var/lib/mysql #挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-p 3307:3306 #端口映射,主机(即阿里云服务器)3307端口映射到容器3306端口,既可以通过主机3307端口访问该数据库
-e MYSQL_ROOT_PASSWORD=123456 #密码
4:查看容器是否启动 docker ps
[root@whale ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
749560a81620 mysql:8.0.23 "docker-entrypoint.s…" 40 minutes ago Up 40 minutes 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql1
[root@whale ~]#
5:修改mysql密码以及可访问主机
5.1 访问数据库
[root@whale ~]# docker exec -it mysql1 /bin/bash
root@749560a81620:/# mysql -uroot -p123456
5.2 修改访问主机以及密码等,设置为所有主机可访问
mysql> use mysql
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> flush privileges
5.3 查看数据库密码 select host,user,authentication_string,plugin from user;
mysql> select host,user,authentication_string,plugin from user;
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host | user | authentication_string | plugin |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | root | $A$005$R@:_[-i!9|/P
8iLECTNcEjxVwVWlIiJF593EnYdBwj2GlwzidW/oRc7uT5 | caching_sha2_password |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
5 rows in set (0.00 sec)
表格内容第一行变成
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password
表示修改成功,可从外部访问该数据库
6:访问测试
6.1在阿里云 控制台=>安全组 中授权端口访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBIkWdyi-1622973313656)(C:\Users\yuzhou\AppData\Roaming\Typora\typora-user-images\image-20210606174912626.png)]
6.2 Navicat测试访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GLyPpiVz-1622973313661)(C:\Users\yuzhou\AppData\Roaming\Typora\typora-user-images\image-20210606175119161.png)]