在Docker中体验数据库之MySql
在上一篇在Docker中体验数据库之Mongodb之后,这次记录一下在docker中安装mysql。过程要比Mongodb麻烦一点……
参考网址:
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-docker.html
https://hub.docker.com/r/mysql/mysql-server/
安装过程如下:
0、docker rm mysql1 -f // 强制删除容器 1、docker pull mysql/mysql-server 2、docker images 3、docker ps -a 4、docker run --name mysql1 -p 3307:3306 -d mysql/mysql-server --default-authentication-plugin=mysql_native_password //注意最后的配置 5、docker logs mysql1 2>&1 | grep GENERATED //查看日志 6、docker restart mysql1 7、docker logs mysql1 2>&1 | grep GENERATED //重启之后还是没有发现密码,说明密码为空 8、docker exec -it mysql1 mysql -uroot -p 9、show databases; 10、ALTER USER 'root'@'localhost' IDENTIFIED BY '123qwe'; 11、select user,host from mysql.user; // 远程访问docker中的mysql时,连接时会报错,1130 12、UPDATE mysql.user SET host='%' WHERE user='root'; 13、docker restart mysql1 //此时终于连接成功!!!! 【例外】 //查看本机IP 1、ip route show 2.1、sudo apt install net-tools 2.2、ifconfig 或者 route -n 或者 netstat -rn
在贴一下,安装过程中报的错误:
--default-authentication-plugin=mysql_native_password
在看一下这个配置,如果没有这个配置,连接数据库时会有如下错误:
MySQL8.0 的密码加密规则变了,网上一搜2059一大堆……当然你也可以在创建容器的时候不添加这个配置,之后在数据库中修改也是一样的。
alter user 'root'@'%' identified with mysql_native_password by '123qwe';
最后来一个连接成功的截图:
最后在记录一个连接:如何查看linux(ubuntu)系统版本信息及CPU信息
结束。
【2019-12-11更新】
一、更新笔记开始的参考网址
msql官方:
1、https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/linux-installation-docker.html
2、https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html
docker官方:
1、https://hub.docker.com/_/mysql
2、https://hub.docker.com/r/mysql/mysql-server
注意:在dockerhub中搜索mysql,会搜索到很多结果,其中有两个或许是我们想要的:mysql和mysql/mysql-server……😵😵😵除了这两个的发布者(应该一个是mysql官方的,另一个是docker官方的)不一样的,其他的我一概不知,具体他们有哪些差异有那位大神知道,还请告知,谢谢!
【2019-12-23更新】
这次使用的是“mysql”镜像,没有上面的那么麻烦,又是密码(或者是上面也支持,只不过没有测试)又是报错的……
docker run --name mysql0 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123qwe -d mysql
拉取镜像之后,执行上面的命令就可以远程连接了。如果是上面的命令,端口号是3307哦!