1.拉取镜像
docker pull mysql:8.0.36
2.安装与挂载文件目录
docker run -p 3306:3306 --name mysql8.0.36 -v /mydata/mysql8.0.36/conf:/etc/mysql8.0.36 -v /mydata/mysql8.0.36/logs:/var/log/mysql8.0.36 -v /mydata/mysql8.0.36/data:/var/lib/mysql8.0.36 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.36
命令解释
-p 将本地主机的端口映射到docker容器端口
本机的3306端口已被宿主机的mysql占用,所以使用3307。
也可以使用3306,就不可以和宿主机的mysql同时启动了。
这里使用什么端口映射可以自己决定,但是不要和我们使用的其他端口重复。
--name 容器名称
-e 配置信息,配置root密码,等号后面跟的是密码,可以自己设置自己想要的密码
-d 镜像名称
-v 是挂在目录
3.进入mysql容器内部
1.docker exec -it mysql8.0.36 bash
2.登录 mysql -uroot -p
4.开启远程访问链接
use mysql;
select Host,User from user;
此时查看到存在Host允许为任意ip访问root用户。
如果没有则需要以下命令赋予权限:
update user set Host='%' where User='root';
FLUSH PRIVILEGES;
5.配置文件修改
在mysql配置文件中修改字符编码以及时区 之前安装挂载的目录
需要创建一个my.cnf保存配置
vi /mydata/mysql/conf/my.cnf
#MySQL客户端的默认字符集
[client]
default-character-set=utf8
#MySQL命令行客户端的默认字符集
[mysql]
default-character-set=utf8mb4
[mysqld]
#设置为 '+8:00' 表示服务器时区为东八区
default-time_zone = '+8:00'
#语句设置连接的排序规则为 utf8_unicode_ci;语句设置连接的字符集为 utf8
init_connect='SET collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
#MySQL服务器使用的默认字符集设置为 utf8;服务器使用的默认排序规则设置为 utf8_unicode_ci。
character-set-server=utf8
collation-server=utf8_unicode_ci
#客户端和服务器之间的字符集设置不一致时,MySQL服务器将不会与客户端进行字符集握手协商
skip-character-set-client-handshake#提高性能,避免域名dns解析
skip-name-resolve