Docker 中如何安装配置MySQL

  • Post author:
  • Post category:mysql



Docker 中如何安装配置MySQL

1、安装docker

1)、移除旧版本的docker:

$ sudo yum remove docker \                  docker-client \                  docker-client-latest \                  docker-common \                  docker-latest \                  docker-latest-logrotate \                  docker-logrotate \                  docker-selinux \                  docker-engine-selinux \                  docker-engin

2)、安装docker

yum install docker

查看是否安装成功

docker version

启动查看docker安装运行状态:

systemctl start docker.service # 开启dockersystemctl enable docker.service # 开机自启动systemtcl status docker.service # 查看docker的运行状态

图片

2、安装mysql镜像

1)查询mysql的镜像

docker search mysql

图片

2) 安装mysql

docker pull mysql # 安装最新版的mysql

图片

3)查看镜像:

docker images

图片

4) 创建必要的文件夹

cd /opt # 我的软件都安装在/opt目录下。mkdir mysql_dockercd mysql_docker/echo $PWD # 当前位置的绝对路径

3、启动容器

1)启动mysql容器:

docker run --name mysqlserver --privileged=true -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest
解释说明::::
# --privileged=true:在docker run中加入 --privileged=true 给容器加上特定权限# --name mysqlserver :指定容器的名字为mysqlserver # -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。# -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。# -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

图片

如果发现容器没有正常启动,则记得加上–privileged=true 给容器加上特定权限

2)查看mysql进程:

docker ps

图片

3) 测试mysql登录:

docker exec -it mysqlserver /bin/bash # 也可以把容器名"mysqlserver"改为容器idmysql -uroot -p

图片


  • sql;


    select host,user from user;


    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # 修改密码


    flush privileges; # 刷新权限。

4)测试远程连接

开放3307端口。

firewall-cmd --zone=public --add-port=3307/tcp --permanent # 开放3307端口firewall-cmd --reload # 配置立即生效firewall-cmd --zone=public --list-ports

远程连接。

图片

4、命令总结

1)、日志查看:

docker logs -f --tail 10 a4dac74d48f7 # 容器id可以通过docker ps查看。

2)、查看进程:

docker ps -a # docker ps :查看运行中的进程;-a:查看所有进程,包括不运行的。

3)、关闭docker中的mysql容器

docker stop mysqlserver # mysqlserver可以替换为容器id

4)、重启docker中的mysql容器

docker restart 容器id

5)、重启docker

systemctl restart docker

6)、关闭docker

systemctl stop docker

5、编码问题。

先看个问题,如果你在命令行查询语句中中文显示是这样的,说明你的docker的mysql容器的编码不是utf8,需要修改,下面给出修改的步骤。

mysql> SELECT DISTINCT department FROM student_info;+-----------------+| department      |+-----------------+| ???        || ???      || ???        || ???        |+-----------------+4 rows in set (0.01 sec)

1)切换进入容器

docker exec -it mysqlserver /bin/bash # 也可以把容器名"mysqlserver"改为容器idmysql -uroot -p # 输入密码

2)安装vim

因为可能你的容器没有vim编辑器,无法完成对my.cnf文件的修改。​​​​​​​

apt-get updateapt-get install vim -y

3)修改my.cnf文件。​​​​​​​

cd /etc/mysqlvim my.cnf

my.cnf的内容为:​​​​​​​

[client]default-character-set=utf8
[mysqld]pid-file        = /var/run/mysqld/mysqld.pidcharacter-set-server=utf8socket          = /var/run/mysqld/mysqld.sockdatadir         = /var/lib/mysqlsecure-file-priv= NULLinit_connect='SET NAMES utf8'
[mysql]no-auto-rehashdefault-character-set=utf8

替换掉其中utf8字样的内容。

4)重启docker。

docker restart 1c7b4791a069 # 容器id,通过docker ps查看。

5)查看是否修改成功​​​​​​​

docker exec -it mysqlserver /bin/bash # 也可以把容器名"mysqlserver"改为容器idmysql -uroot -p # 输入密码show variables like 'char%'; # 查看编码
​​​​​​
mysql> show variables like 'char%';+--------------------------+--------------------------------+| Variable_name            | Value                          |+--------------------------+--------------------------------+| character_set_client     | utf8                           || character_set_connection | utf8                           || character_set_database   | utf8                           || character_set_filesystem | binary                         || character_set_results    | utf8                           || character_set_server     | utf8                           || character_set_system     | utf8                           || character_sets_dir       | /usr/share/mysql-8.0/charsets/ |+--------------------------+--------------------------------+8 rows in set (0.00 sec)

成功。

mysql> SELECT DISTINCT department FROM student_info;+-----------------+| department      |+-----------------+| 软件学院        || 计算机学院      || 材料学院        || 生物学院        |+-----------------+4 rows in set (0.01 sec)



版权声明:本文为steven_cici原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。