Docker安装配置MySQL的实现步骤

Docker安装配置MySQL的实现步骤,第1张

Docker安装配置MySQL的实现步骤 目录
  • 前言
  • 环境
  • 安装
  • 创建并启动MySQL容器
  • 提醒
    • 创建并启动MySQL容器命令
    • 参数说明:
  • 进入到MySQL容器内部进行配置
    • 进入命令
    • 连接MySQL
    • 更改MySQL密码
  • 测试连接

    前言

    MySQL 是世界上最受欢迎的开源数据库,So~本文将演示如何在Docker上安装并且配置MySQL。



    环境
    • CentOS 7
    • Docker 20.10.10

    安装

    拉取镜像

    docker pull mysql
    

    如果要指定版本,在mysql后面加上:+版本号,例如:

    docker pull mysql:8.0.16
    

    这里直接拉取最新版MySQL



    查看镜像

    docker images
    



    创建并启动MySQL容器

    创建数据目录和配置文件

    提前在宿主机创建好放置mysql的配置文件的目录和数据目录,并且进行授予权限,避免挂载外部配置和数据时启动失败:



    创建放置mysql的配置文件的目录和数据目录

    mkdir -p /mydata/mysql/
    

    设置文件夹权限

    chmod -R 755 /mydata/mysql
    

    第一个数字表示文件所有者的权限 第二个数字表示与文件所有者同属一个用户组的其他用户的权限 第三个数字表示其它用户组的权限。
    权限分为三种:读(r=4),写(w=2),执行(x=1) 。
    综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。 所以,chmod
    755 设置用户的权限为:
    1.文件所有者可读可写可执行 --7
    2.与文件所有者同属一个用户组的其他用户可读可执行 --5
    3.其它用户组可读可执行

    创建my.cnf配置文件

    mkdir -p /mydata/mysql/conf
    touch /mydata/mysql/conf/my.cnf
    

    编辑my.cnf配置文件

    vi /mydata/mysql/conf/my.cnf
    

    添加以下配置内容

    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    secure_file_priv=/var/lib/mysql
    

    提醒

    无论你是否使用我的配置,如果你的安装的是新版MySQL,务必要复制这一句:

    secure_file_priv=/var/lib/mysql
    

    第一次创建启动MySQL容器的时候,MySQL会访问/var/lib/mysql文件夹,如果没有权限就会导致无法启动,使用docker ps之后看不到mysql容器在运行,需要设置secure_file_priv的值指定为/var/lib/mysql,这样就有权限正常访问和读写/var/lib/mysql目录

    Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Suppliedvalue : /var/lib/mysql-files
    译文:无法访问–secure-file-priv的目录。请确保该目录存在并且可由MySQL服务器访问。提供的值:/var/lib/mysql文件

    • secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
    • secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
    • secure_file_priv的值为空,表示不对mysqld 的导入|导出做限制

    创建并启动MySQL容器命令
    sudo docker run -p 3306:3306 --name mysql 
    -v /mydata/mysql/log:/var/log/mysql 
    -v /mydata/mysql/data:/var/lib/mysql 
    -v /mydata/mysql/conf:/etc/mysql 
    -e MYSQL_ROOT_PASSWORD=root 
    -d mysql:latest
    

    参数说明:
    • -p 3306:3306:将容器的3306端口映射到主机的3306端口
    • --name mysql:定义容器名称为mysql
    • -v /mydata/mysql/log:/var/log/mysql :将MySQL的日志文件夹挂载到主机
    • -v /mydata/mysql/data:/var/lib/mysql:将MySQL的数据文件夹挂载到主机
    • -v /mydata/mysql/conf:/etc/mysql:将MySQL的配置文件夹挂载到主机
    • -e MYSQL_ROOT_PASSWORD=root:初始化root用户密码
    • -d mysql:latest:选择MySQL版本为latest的镜像构建容器



    查看正在运行的容器

    docker ps
    



    进入到MySQL容器内部进行配置

    进入命令
    docker exec -it 容器id ./bin/bash
    



    连接MySQL

    这里因为我们自己设置的MySQL默认密码为root所以p后面为root

    mysql -uroot -proot
    



    更改MySQL密码

    使用mysql库

    use mysql
    

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

     ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
    

    注意:mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接

    测试连接

    测试前请保证关闭了防火墙,如果是云服务器记得开放3306规则

    Linux关闭防火墙

    # 关闭
    systemctl stop firewalld
    # 禁止开机启动防火墙
    systemctl disable firewalld
    

    云服务开放3306端口



    使用Navicat测试连接



    使用SQLyog测试连接



    Docker安装和配置MySQL教程结束!

    以上就是Docker安装配置MySQL的实现步骤的详细内容,更多关于Docker 安装MySQL的资料请关注考高分网其它相关文章!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zaji/5697912.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-12-17
    下一篇 2022-12-17

    发表评论

    登录后才能评论

    评论列表(0条)

    保存