这有两个比较重要的,一个是配置出口端口,
还有一个就是拿到自己的公网ip 连接上服务器
我用的是finalshell 工具连接。
Docker中配置安装MySQL_tuziailuobo_lee的博客-CSDN博客_docker安装mysql配置时间:2022-04-13作者:tuziailuobo简介:在Docker中安装MySQL并进行配置,将数据挂载到本地Docker中配置安装MySQL说明:默认已经安装好docker,环境是阿里云ubuntu20,阿里云安全组开放3306端口.1、下载MySQL镜像docker pull mysql:5.72、创建MySQL容器的同时挂载数据docker run -d --restart=always --name mysql02 -p 3306:3306 -v /home/mysql.https://blog.csdn.net/qq_40716436/article/details/124149033?ops_request_misc=&request_id=&biz_id=102&utm_term=docker%E5%AE%89%E8%A3%85mysql&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-124149033.142^v30^pc_rank_34,185^v2^control&spm=1018.2226.3001.4187
查看镜像
docker images
不过看不看也没什么关系发,反正会自动拉取的
查看容器
docker ps
跟着命令跑一遍,然后查看mysql是否成功运行。如果mysql成功运行了。使用navicat连接
好了,水了一半。 navicat 连接这里有几个常见的报错
2005 - Unknown MySQL server host '45.130.63.101' (11001) "
这个报错应该是服务器ip不对
2003 - Can't connect to MySQL server on '47.100.68.107' (10060 "Unknown error")
可能是端口没有打开
记得把服务器端口打开。这个端口不一定是3306 。取决于你启动docker容器的时候。映射的端口
不过一半都是3306
1045 - Access denied for user 'root'@'117.147.47.90' (using password: YES).
端口打开后,换了一个报错了。ip我都懒得影藏了。 这个端口就比较笼统了。可能是账号密码不对。也可能是账号没有允许远程访问。
#更新, 或者安装yum
yum -y update
#清除系统残余项如果服务器之前没有装过Docker,可以直接跳过
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
#需要的安装包
yum install -y yum-utils
#设置镜像的仓库
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
#安装docker相关的 docker-ce 社区版 而ee是企业版
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
#测试
docker run hello-world
12345678910111213141516171819202122232425262728293031323334353637
#8.查看已经下载的镜像(从这里可以查看已有镜像的id)
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
#创建并进入相关容器
mkdir ~/mysql
cd ~/mysql
#配置阿里云镜像加速
http://oss.console.aliyun.com
控制台搜索容器镜像服务。 镜像加速器,选择自己对应的linux版本使用。每个人的不一样
# docker 中下载 mysql
docker pull mysql
#启动
docker run -id \
-p 3306:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=a123..a \
-d mysql
#进入容器
docker exec -it mysql bash
#登录mysql
mysql -u root -p
#修改root用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'a123..a';
#添加远程登录用户------- 8.0之后的----------------
#user_name:要创建用户的名字
#host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填 ‘localhost’ ,如果允许从远程登陆,则填 ‘%’
#password:新创建用户的登陆数据库密码,如果没密码可以不写。
CREATE USER 'silence'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL
#databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 *.*,*是一个通配符,表示全部
#’username‘@‘host’:表示授权给哪个用户。
GRANT ALL PRIVILEGES ON *.* TO 'silence'@'%';
#添加远程登录用户------- 8.0之前的
#第一个root表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,第二个root表示密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
#刷新MySQL的系统权限相关表
flush privileges;
#查看所有用户(用户名、给谁授权)
SELECT user,host FROM mysql.user;
docker exec mysql01 bash
先进入一下容器。记得更换为自己容器的名字。创建容器的时候指定的
登录mysql
Welcome to the MySQL monitor. 看到这个就证明账号密码,没问题。如果navicat 是用的这个账号密码登录的,还是出现1045 。那就是账号授权的问题。
#添加远程登录用户------- 8.0之前的 #第一个root表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,第二个root表示密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; #刷新MySQL的系统权限相关表 flush privileges; #查看所有用户(用户名、给谁授权) SELECT user,host FROM mysql.user;
我之前是给root账户授权的,但是好像还是1045 。不行
SELECT user,host FROM mysql.user;
有可能是我没搞好的原因。后来我又创建了一个用户silence 。可以成功访问。
我再创建一个账户吧。
吧唧吧唧一大堆,其实就是创建用户,授权远程访问。我这里的用户名是silence1
CREATE USER 'silence1'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'silence1'@'%';
好了。连接成了