centos7 安装docker
离线安装包
下载离线安装包
https://download.csdn.net/download/weixin_38305440/12265961
上传离线安装包
- docker-install 目录上传到/root
切换到docker-install目录
cd docker-install
安装
rpm -ivh *.rpm
在线安装docker
安装
yum -y install docker
docker 命令
启动
systemctl start docker
重启
systemctl restart docker
停止
systemctl stop docker
开机自启
systemctl enable docker
前面有坑—如果你在docker运行期间操作了防火墙启动或关闭必须重启
systemctl restart docker
docker镜像加速
修改配置文件 /etc/docker/daemon.json
拷贝下面的内容/etc/docker/daemon.json中
{ "registry-mirrors": ["https://32xw0apq.mirror.aliyuncs.com"] }
使配置文件生效
systemctl daemon-reload
重启docker
systemctl restart docker
docker 安装mysql
查看mysql可用版本
docker search mysql
拉取MySQL 镜像
这里拉取官方的最新版本的镜像:
docker pull mysql:latest
查看本地镜像
使用以下命令来查看是否已安装了mysql
docker images
运行容器
安装完成后,我们可以使用以下命令来运行mysql容器
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
参数说明:
- run run 是运行一个容器
- -d 表示后台运行
- -p 表示容器内部端口和服务器端口映射关联
- –privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
- -v /docker/mysql/conf/my.cnf:/etc/my.cnf 将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
- -v /docker/mysql/data:/var/lib/mysql 同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
- -e MYSQL_ROOT_PASSWORD=123456 设置MySQL数据库root用户的密码
- –name mysql 设值容器名称为mysql
- mysql:latest 表示从docker镜像mysql:latest中启动一个容器
- –character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码
本地连接mysql
先进入容器
docker exec -it mysql bash
执行mysql命令,输入root密码,连接mysql
mysql -uroot -p
远程连接mysql
配置linux数据库权限
进入容器数据库后
切换数据库mysql
切换mysql 数据库
修改数据库表
-
检查数据表
-
查询user表中的host/root
-
将host=“localhost” 改为"%"
update user set host="%" where host="locahost";
- 刷新数据库权限
flush privileges;
问题
说明:如果创建mysql的数据库连接报如下错误:2059 - Authentication plugin ‘caching_sha2_password’ cannot be loaded:
从错误信息可知caching_sha2_password不能加载。
以上报错是由于目前已有的客户端连接软件还不支持Mysql8新增加的加密方式caching_sha2_password,所以我们需要修改用户的加密方式,将其改为老的加密验证方式。
大安装Mysql数据库的主机上登录Mysql对应的用户,上面连接时用的用户为root,所以我们登录root用户。
解决
执行命令
- 进入容器数据库,后进入mysql数据库
use mysql
select user,plugin from user where user='root';
可以看到当前用户的加密方式为caching_sha2_password
执行命令
alter user 'root'@'%' identified with mysql_native_password by 'Admin@123';
将用户的加密方式改为mysql_native_password。
参数说明:
- ’ root’@’%’ :user表的user字段和host字段
- ‘Admin@123’ :数据库连接密码
执行命令flush privileges使权限配置项立即生效。
再次尝试连接Mysql,连接成功。