云服务器上搭建MySQL环境并且设置不同权限的远程访问用户
一、CentOS7.6下安装docker
-
更新源
yum -y update
-
安装docker
yum -y install docker
-
启动docker、 设置开机自启
systemctl start docker systemctl enable docker
-
查看docker版本
docker info
二、使用docker 安装mysql8.0
-
下载mysql8.0镜像
docker pull mysql:8.0
-
查看镜像
docker images
-
创建挂载目录
mkdir -p /data/mysql8/conf mkdir -p /data/mysql8/data mkdir -p /data/mysql8/logs
-
创建my.cnf文件,放在 /data/mysql/conf 目录中,注意配置文件中的端口号、字符集、时区,由于这里我还并不太会设置my.cnf,此处忽略 -
创建并启动容器,请合理参考
docker run -d --name mysql8 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /data/mysql8/data:/var/lib/mysql \ -v /data/mysql8/logs:/var/log/mysql \ -p 53306:3306 \ --restart=unless-stopped \ mysql:8.0
参数解释:
-d
:让容器在后台运行--name
:将容器要命名成什么-p
:映射宿docke端口号到宿主机端口号 左:宿主机端口号 右:docker端口号-e MYSQL_ROOT_PASSWORD=
:设置root用户密码-v
:挂载点 左边为挂载宿主机目录 右边为容器目录--restart
:指定容器自动重启的策略。unless-stopped
:容器被启动后,只要不是被手动停止,就会一直自动重启。always
:容器退出时总是自动重启。即使容器在正常情况下已经手动停止,也会自动重启。on-failure[:max-retries]
:若容器退出状态非0,则自动重启,最多重启max-retries次(该参数为可选参数,默认值为5)。如果max-retries被设置为0,则无限次地自动重启容器。no
:永远不重启容器
-
进入容器:
docker exec -it 容器id /bin/bash
扫描二维码关注公众号,回复: 17192733 查看本文章eg:
docker exec -it 00c1820f12ef /bin/bash
-
进入mysql:
mysql -uroot -p
,然后输入密码
三、设置不同访问权限的远程访问用户
此处我重新跑了一个新的mysql8的容器
-
进入容器
docker exec -it 788b531e4441 /bin/bash
-
进入mysql
mysql -uroot -p
之后输入密码
-
一些简单的操作,查看可登陆用户名和对应匹配的主机
# 列出所有数据库的列表 SHOW databases; #显示指定数据库的所有表,前提已经使用use选择了操作的数据库 USE mysql; SHOW TABLES; #查询用户表中可登录用户名和匹配的主机 SELECT User,Host from user;
发现有一个
root
用户,可登录主机%
,即任何来源均可。由于我设置的密码为123456
非常简单,我们需要删除这个用户。创建其他特定权限的用户,增加数据库安全性,让root权限用户只允许在服务器上本机登入。删除该用户:
DROP USER 'root'@'%';
-
创建一个用于测试的数据库
datespase_test
CREATE DATABASE datespase_test;
-
创建用户
ettian
,可登录主机来源为%
CREATE USER 'ettian'@'%' IDENTIFIED BY 'test_password';
test_password
为该用户的密码 -
赋予
datespase_test
数据库下的所有权限grant all privileges on datespase_test.* to 'ettian'@'%';
-
刷新权限
flush privileges;
-
使用Navicat连接,记得在服务器的防火墙打开对应的端口号。
由于我容器映射的本机端口号为53307,此图中我写成了3306,所以连接不上,编辑连接,改为53307即可