先登录自己的阿里云服务器
这有两个比较重要的,一个是配置出口端口,
还有一个就是拿到自己的公网ip 连接上服务器
我用的是finalshell 工具连接。
主要是基于docker安装mysql ,现在我的服务器docker已经安装了,安装也很简单。网上有很多详细的步骤,跑一遍就好了
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我都懒得影藏了。 这个端口就比较笼统了。可能是账号密码不对。也可能是账号没有允许远程访问。
#更新, 或者安装yumyum -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启动dockersystemctl start docker#测试docker run hello-world12345678910111213141516171819202122232425262728293031323334353637#8.查看已经下载的镜像(从这里可以查看已有镜像的id)[root@iz2zeak7sgj6i7hrb2g862z ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest bf756fb1ae65 4 months ago 13.3kB#创建并进入相关容器mkdir ~/mysqlcd ~/mysql#配置阿里云镜像加速http://oss.console.aliyun.com控制台搜索容器镜像服务。 镜像加速器,选择自己对应的linux版本使用。每个人的不一样# docker 中下载 mysqldocker 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#登录mysqlmysql -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'@'%';
好了。连接成了