普通安装
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以上)
解决办法
进入docker容器 :docker exec -it mysql bash
- mysql可以是实例名也可以是docker下mysql的ID
登陆数据库 : mysql -uroot -p
输入密码:123456
-
123456是上面为mysql设置的密码
修改数据库
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
重新修改密码后可连接成功
mysql> alter user 'root'@'%' identified by '123456';
刷新数据库 mysql> flush privileges;
重新外网登陆ok
挂载数据卷以及配置文件
数据和日志放在指定的文件夹/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
- 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
重启
docker restart mysql