在docker里面运行mysql
本来
没那么快在docker上运行mysql的,最近给公司弄了一个网盘项目和wiki项目,都使用mysql数据库(centos7 使用yum安装的MariaDB),先安装网盘默认的配置,没有任何问题,然后安装wiki的时候发现数据库修改默认参数,
但是修改以后,wiki可以使用了,网盘项目缺不能用了,也就是两个项目对mysql参数多有要求,刚好两个参数还是相反的,这样一个mysql就无法满足要求了,就需要安装2个mysql,但是一个系统安装两个mysql好像也比较麻烦,刚好最近一直在调试docker+k8s,就用了docker来实现
1.下载MySQL的的镜像,由于宿主用是MariaDB,所以下载也是这个镜像
docker pull mariadb:5.5
2.运行docker
docker run -itd --restart=on-failure -p 3309:3306 -e MYSQL_ROOT_PASSWORD=root --name mariadb -v /home/docker-mysql/mysql:/var/lib/mysql mariadb:5.5
参数解释:
-itd 后台运行
--restart=on-failure 如果docker不是退出代码0,他会自动重启,默认重启10次
-p 3309:3306 将宿主3309端口映射到docker3306上面
-e MYSQL_ROOT_PASSWORD=root 设置root的密码为:root
--name mariadb 设置docker的名字(docker ps可以看到)
-v /home/docker-mysql/mysql:/var/lib/mysql 映射本地目录到docker容器里面(如果里面存在该目录,会被覆盖)
3.测试连接(并创建数据库)
mysql -h 192.168.2.2 P3309 -uroot -proot (可以连接)
mysql -h localhost P3309 -uroot -proot(不能连接)
求大神解释下为什么不能用localhost
4.导入数据库
5.修改连接
这个版本的mysql默认居然支持root账号任意ip连接,也太不安全了
use mysql;
delete from user where host="%";
哈哈,我是直接删除root的任何ip登录权限,各位可以自己自己需要修改。