MySQL开发环境版本和生产环境版本不一致
我这里出现了一个版本不一致的问题,公司服务器强制要求使用mysql5.7.30版本,但是我mac上本地是mysql8.0的版本。
解决方案:本地docker一个5.7.30的容器,映射到3316端口。
❤️x86中有mysql官方镜像
1、docker pull mysql:5.7.30
目前公司用的这个mysql版本
2、mkdir -p ~/mysql5.7.30/data
创建volume文件
3、docker run -p 3316:3306 --name xtmysql -v ~/mysql5.7.30/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=cgz*****6 -d mysql:5.7.30
开启容器
4、 本地docker镜像我就不新建一个用户去拥有所有数据库的访问权限了,因为直接用root了。🚗Mac_arm架构只有mysql_server镜像提供,5.7.30版本虽然只支持amd64,但是好像还是能在arm芯片跑。
1、docker run -p 3316:3306 --name localxtmysql -v ~/mysql5.7.30/data:/var/lib/mysql -d mysql/mysql-server:5.7.30
创建容器
&、如果volume卷中有数据,那么就跳过下面的步骤就行,密码还是老的密码。
2、进入容器,docker logs 容器名
查看mysql初始密码
3、ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxx';
修改root密码
4、在root用户的mysql会话中,修改root账户的被连接权限,不然容器外的ip无法连接mysql
use mysql;
update user set host='%' where user='root' ;
flush privileges;
docker安装mysql
1、 docker安装并设置加速镜像
2、docker pull mysql:5.7.30
目前公司用的这个mysql版本
3、mkdir -p ~/mysql/data
创建volume文件
4、docker run -p 3306:3306 --name xtmysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xt****6 -d mysql:5.7.30
开启容器
5、docker exec -it [容器ID] /bin/bash
进入mysql容器
6、mysql -u root -p
输入密码进入mysql对话环境
7、GRANT ALL PRIVILEGES ON *.* TO 'marhoo'@'%' IDENTIFIED BY 'very_strong_password_xxxxx';
mysql对话中,执行这条命令。创建一个新的独立用户,拥有所有数据库的访问权限,且让该用户可以从任意远程主机登陆,可以使用通配符%
8、FLUSH PRIVILEGES;
然后mysql对话中,执行这条命令刷新权限信息
9、 测试一下user组
mysql> use mysql
mysql> select host, user, plugin from user;
docker安装宝塔(为了环境干净,套层centOS再往容器里安装)
目标是先安装一个centos7,再往里安装宝塔
1、docker pull centos:centos7
安装centOS7
2、 启动centOS容器
docker run -i -t -d --name baota -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 --privileged=true -v /home/www:/www centos:centos7
#上面命令的意思是创建一个docker容易命名为baota(名称大家自定义)让他后台运行,然后将宿主机的20,21,80,443,888,8888这五个端口映射到docker容器中去。
并且将宿主机的/home/www文件夹映射到docker容器的/www上去(注意:文件目录如果不存在。宿主机和容器会自己创建,无需手动创建)。privileged表示在运行容器的时候,给容器加特权,设置容器有写文件的权限。
3、docker exec -it baota /bin/bash
进入centOS容器
4、yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装宝塔
5、 特别注意:为了能够保存(持久化)数据以及共享容器间的数据,docker一定使用-v挂载主机目录到容器,比如上面启动容器的 docker -v 参数。
6、 在宝塔中安装完nginx后,需要去反向代理另一个容器web服务比如127.0.0.1:7001,在宝塔中直接配置是无法成功的。解决方案:先定位到docker0路由器,所有的容器就是路由下面的设备。从下图得出docker0的路由是172.17.0.1,所以在宝塔反向代理中设置成如下。
docker中安装mongodb
1、docker pull mongo
拉取镜像
2、docker run -itd --name mymongo -v ~/mongoDB:/data/db -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo --auth
启动容器并映射好volume并初始化好admin账户并仅支持身份验证
3、docker exec -it mymongo mongo admin
进入mongo容器并执行mongo,用admin账户登录主admin数据库
4、db.auth("admin", "123456")
用admin授权
5、use xtwork
创建一个工作数据库xtwork
6、db.createUser({user: "cgz", pwd: "123456", roles: [{role: "readWrite", db: "xtwork"}]})
创建一个链接的账户cgz,授权给工作数据库xtwork
7、 navicat登录
8、 如果需要指定的ip可以连接数据,比如跑在容器中的主服务,可能还需要修改网络的一些配置才能保证容器主服务与mongo的连接
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。