大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说docker安装mysql,希望能够帮助大家进步!!!
默认拉取最新版本的镜像
$ docker pull mysql
如果要指定版本,使用下面的命令
$ docker pull
mysql:8.0.16
在宿主机创建放置mysql的配置文件的目录和数据目录,并且进行授权
$ mkdir -p /usr/mysql/conf /usr/mysql/data
$ chmod -R 755 /usr/mysql/
在上面创建的配置文件目录/usr/mysql/conf下创建MySQL的配置文件my.cnf
$ vim /usr/mysql/conf/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/
$ docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:
/etc/mysql/my.cnf -v /usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
参数解释: -v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录 -d : 后台运行容器 -p 映射容器端口号和宿主机端口号 -e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码
执行上述命令后,执行查询容器的命令就可以看到创建的mysql容器
$ docker ps
结果如下所示:
上述虽然安装好了mysql,但是使用远程的Navicat连接时提示错误,不能正确连接mysql,此时需要修改按照下面说的步骤修改一下mysql的密码模式以及主机等内容才可以。
$ docker
exec -it id ./bin/bash
$ mysql -uroot -p
$ mysql>
use mysql
$ mysql> ALTER USER
'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
注意: mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接
经过以上步骤,再次远程使用Navicat连接数据库时就可以正常连接了。