注意: 前提必须把linux上的docker安装好。
第一步拉取镜像
docker pull mysql:8.0.16
第二步创建数据目录和配置文件
mkdir -p /usr/mysql/conf /usr/mysql/data
chmod -R 755 /usr/mysql/
第三步创建配置文件
vi /usr/mysql/conf/my.cn
添加以下内容到上述创建的配置文件中
[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/
第四步启动创建容器
docker run -p 3306:3306 --name mysql8.0.16 \
-v /usr/mysql/conf:/etc/mysql/mysql.conf.d \
-v /usr/mysql/log:/var/log/ \
-v /usr/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.16 \
--lower_case_table_names=1
参数解释:
-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-d : 后台运行容器
-p 映射容器端口号和宿主机端口号
-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码
第五步查看容器启动
docker ps -a
上述虽然安装好了mysql,但是使用远程的Navicat连接时提示错误,不能正确连接mysql,此时需要修改按照下面说的步骤修改一下mysql的密码模式以及主机等内容才可以。
第六步修改mysql密码以及可访问主机模式
进入容器内部
docker exec -it mysql8.0.16 /bin/bash
连接mysql
mysql -uroot -p
使用mysql库
mysql> use mysql
修改访问主机以及密码等,设置为所有主机可访问
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
注意:
mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接
刷新
mysql> flush privileges;
经过以上步骤,再次远程使用Navicat连接数据库时root账户就可以正常连接了。
设置docker容器中的mysql开机启动
docker update mysql8.0.16 --restart=always