Docker下安装mysql

普通安装

1、下载mysql最新版本

docker pull mysql

2、创建mysql实例并启动

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

参数说明

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -e MYSQL ROOT_PASSWORD=123456:初始化mysql root用户密码
3、查看是否运行

docker ps

4、Navicat连接报错(mysql8.0以上)
image.png
解决办法

进入docker容器 :docker exec -it mysql bash

  • mysql可以是实例名也可以是docker下mysql的ID

登陆数据库 : mysql -uroot -p
输入密码:123456

  • 123456是上面为mysql设置的密码


    image.png

修改数据库
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

重新修改密码后可连接成功
mysql> alter user 'root'@'%' identified by '123456';

刷新数据库 mysql> flush privileges;

重新外网登陆ok

image.png
image.png

挂载数据卷以及配置文件

数据和日志放在指定的文件夹/mydata/mysql/conf和/mydata/mysql/data

  • docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="root" mysql
  • docker exec -it mysql bash
  • mkdir -p /mydata/mysql/conf && mkdir -p /mydata/mysql/data
  • docker cp mysql:/etc/mysql/my.cnf /mydata/mysql/conf


    image.png
  • docker stop mysql
  • docker rm mysql
  • docker run --name mysql
    -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root
    --mount type=bind,src=/mydata/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf
    --mount type=bind,src=/mydata/mysql/data,dst=/var/lib/mysql
    --restart=on-failure:3
    -d mysql

--name:为容器指定一个名字
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
-e:username="xxx",设置环境变量
--restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
-mount:绑定挂载
-d:后台运行容器,并返回容器 id

修改编码字符集

进入mysql :docker exec -it mysql bash
登陆数据库 : mysql -uroot -p
输入密码:123456
查看当前编码字符集:show variables like '%char%';
exit退出

进入刚刚创建的conf目录
cd /mydata/mysql/conf
vi my.cnf
插入

[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
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

image.png

重启
docker restart mysql

你可能感兴趣的:(Docker下安装mysql)