云服务器上搭建MySQL环境并且设置不同权限的远程访问用户

云服务器上搭建MySQL环境并且设置不同权限的远程访问用户

一、CentOS7.6下安装docker

  1. 更新源

    yum -y update
    
  2. 安装docker

    yum -y install docker
    
  3. 启动docker、 设置开机自启

    systemctl start docker
    systemctl enable docker
    
  4. 查看docker版本

    docker info
    

二、使用docker 安装mysql8.0

  1. 下载mysql8.0镜像

    docker pull mysql:8.0
    
  2. 查看镜像

    docker images
    
  3. 创建挂载目录

    mkdir -p /data/mysql8/conf
    mkdir -p /data/mysql8/data
    mkdir -p /data/mysql8/logs
    
  4. 创建my.cnf文件,放在 /data/mysql/conf 目录中,注意配置文件中的端口号、字符集、时区,由于这里我还并不太会设置my.cnf,此处忽略

  5. 创建并启动容器,请合理参考

    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:永远不重启容器
  6. 进入容器:docker exec -it 容器id /bin/bash

    eg:docker exec -it 00c1820f12ef /bin/bash

  7. 进入mysql: mysql -uroot -p,然后输入密码

三、设置不同访问权限的远程访问用户

此处我重新跑了一个新的mysql8的容器

image-20230618215203562

  1. 进入容器

    docker exec -it 788b531e4441 /bin/bash
    
  2. 进入mysql

    mysql -uroot -p
    

    之后输入密码

  3. 一些简单的操作,查看可登陆用户名和对应匹配的主机

    # 列出所有数据库的列表
    SHOW databases;
    #显示指定数据库的所有表,前提已经使用use选择了操作的数据库
    USE mysql;
    SHOW TABLES;
    #查询用户表中可登录用户名和匹配的主机
    SELECT User,Host from user;
    

    image-20230618221358006

    发现有一个root用户,可登录主机%,即任何来源均可。由于我设置的密码为123456非常简单,我们需要删除这个用户。创建其他特定权限的用户,增加数据库安全性,让root权限用户只允许在服务器上本机登入。

    删除该用户:

    DROP USER 'root'@'%';
    
  4. 创建一个用于测试的数据库datespase_test

    CREATE DATABASE datespase_test;
    
  5. 创建用户ettian,可登录主机来源为%

    CREATE USER 'ettian'@'%' IDENTIFIED BY 'test_password';
    

    test_password为该用户的密码

  6. 赋予datespase_test数据库下的所有权限

    grant all privileges on datespase_test.* to 'ettian'@'%';
    
  7. 刷新权限

    flush privileges;
    

    image-20230618223258486

  8. 使用Navicat连接,记得在服务器的防火墙打开对应的端口号。

    image-20230618223858276

    由于我容器映射的本机端口号为53307,此图中我写成了3306,所以连接不上,编辑连接,改为53307即可

    image-20230618224136657

猜你喜欢

转载自blog.csdn.net/zhihong2002/article/details/131277278