docker 安装 mysql

发布时间 2023-10-24 15:45:04作者: 之辰

安装mysql

拉取镜像

docker pull mysql

创建mysql数据和配置目录

mkdir /tool/mysql/log
mkdir /tool/mysql/data
mkdir /tool/mysql/share
mkdir /tool/mysql/conf.d

创建配置文件my.cnf

vim /tool/mysql/conf.d/my.cnf
[mysqld]
character-set-server=utf8mb4
port = 3306
basedir=/tool/mysql
datadir=/tool/mysql/data
max_connections=2000
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
lc-messages=en_US
lc-messages-dir=/tool/mysql/share
[mysql]
default-character-set=utf8mb4

[mysql.server]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4

创建容器

docker run -d \
        -p 3306:3306 \
        --name mysql \
        --privileged=true \
        -v /tool/mysql/log:/var/log/mysql \
        -v /tool/mysql/data:/var/lib/mysql \
        -v /tool/mysql/conf.d:/etc/mysql/conf.d \
        -v /etc/localtime:/etc/localtime:ro \
        # 设置密码
        -e MYSQL_ROOT_PASSWORD=1234 \
mysql:latest

mysql/conf.d是配置目录

创建完成查询容器列表

如果要配置远程连接的话,需要开放端口3306,如果是云服务器,需要开两次:

  • linux服务器防火墙

    # 开放3306端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    # 加载规则
    firewall-cmd --reload
    # 查询端口开启情况
    firewall-cmd --zone=public --query-port=3306/tcp
    
  • 云服务器厂商防火墙,基本上都是在云服务器防火墙菜单中。

还需要查询当前mysql的对于root用户配置的连接权限

# 进入mysql容器
docker exec -it mysql bash
# 输入mysql连接命令
mysql -uroot -p
# 输入密码
1234
# 使用mysql库
use mysql;
# 查询root用户连接权限,默认应该是 localhost 只支持本地连接
select host,user from user;

我这边是配置完成的,%代表支持所有ip访问。

改变root用户连接权限

alter user 'root'@'localhost' identified by '1234';
update user set host = "%" where user = 'root';
flush privileges;

补上成功样例:

image-20231024153347740