Docker部署Mysql8.0数据库

1. 拉取镜像

docker pull mysql:8.0.28

2. 创建数据目录和配置文件(跳过)

在宿主机创建放置mysql的配置文件的目录和数据目录,并且进行授权

mkdir -p /usr/mysql/conf /usr/mysql/data
chmod -R 755 /usr/mysql/

3. 创建配置文件(可以跳过)

在上面创建的配置文件目录/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

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/

4. 启动创建容器

docker run --name mysql8 --restart=always \
    -p 3305:3306 \
    -v /usr/mysql/data:/var/lib/mysql  \
    -v /usr/mysql/mysql-files:/var/lib/mysql-files  \
    -e MYSQL_ROOT_PASSWORD="Abcd123." \
    -e TZ=Asia/Shanghai \
    -d mysql:8.0.28 --lower-case-table-names=1

参数解释:
-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-d : 后台运行容器
-p 映射容器端口号和宿主机端口号
-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

mysql8新增参数项:

  • lower_case_table_names 是否配置忽略表名大小写,1忽略0不忽略

官方解释:
lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited. (只能在首次初始化的时候配置,通过修改my.cnf文件无效)

执行完上述命令后,执行查询容器的命令就可以看到创建的mysql容器

查看容器运行情况

$ docker ps

5. 修改mysql密码、设置远程访问

进入容器内部

$ docker exec -it mysql8 /bin/bash

连接mysql

$ mysql -uroot -p

使用mysql库

$ mysql> use mysql

修改访问主机以及密码等,设置为所有主机可访问

$ mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

注意:
这里用了mysql_native_password,mysql8.x版本必须使用这种方式修改密码,否则navicate无法正确连接

刷新

$ mysql> flush privileges

经过以上步骤,再次远程使用Navicat连接数据库时就可以正常连接了。

你可能感兴趣的:(docker)