1.拉取MySQL镜像 :
docker pull mysql:8.0.26(指定版本)
2.查看镜像:
docker images
3.创建mysql容器实例并运行
docker run -it --name mymysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:8.0.26
4.查看容器实例:
docker ps -a
5.进入mysql容器并登陆
docker exec -it 013392c286a4 bash
这里的“013392c286a4 ”,表示当前容器id,可通过 docker ps -a 命令查看。
6.执行远程连接(如果连接数据库报错可以访问以下进行解决)
Mysql连接报错:1130-host ... is not allowed to connect to this MySql server-阿里云开发者社区 (aliyun.com)
mysql 8 远程连接
mysql 8以上默认使用的是caching_sha2_password身份验证机制,之前用的是mysql_native_password,所以远程连接可能会抛出1521、2059 等错误(大多是因为navicat不是最新版,而是老的盗版,最新版支持mysql 8加密方式),需要修改用户的密码加密校验方式!
进入mysql容器并登陆mysql,执行:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
这里的password是自己指定的密码,‘root’@’%'表示任何ip都可以连接。随后刷新,即可正常远程连接!
flush privileges;
至于远程访问权限,默认都是授予的,因此不必设置。
7. 修改时区
mysql默认存储时间类型的数据的时间值与系统时间总是不对应,相差8个小时。如果使用简单的设置,那么docker中每一次启动mysql实例,设置信息还是会被还原,因此我们这里需要修改配置文件,达到永久设置系统时区的功能!
首先进入mysql容器(不需要登陆),第6点已经讲了。随后进入my.cnf的目录:
cd /etc/mysql
添加一行:default-time_zone = ‘+8:00’ 配置到my.cnf末尾即可实现永久更改。
echo "default-time-zone = '+08:00'">>my.cnf
在代码的url中也可以添加serverTimezone=Asia/Shanghai参数来临时设置时区。