文章目录

  • 1.安装mysql5.7
  • 1.1 拉取mysql5.7的镜像
  • 1.2 创建容器并启动
  • 1.2 登录mysql
  • 1.2.1 登录出错
  • 1.3 创建允许远程访问的新用户
  • 2 mysql数据库常用命令
  • 2.1 grant添加权限常用命令
  • 2.2 mysql常用命令


1.安装mysql5.7

1.1 拉取mysql5.7的镜像

  • 可以使用docker search mysql 查看相关镜像
docker pull /centos/mysql-57-centos7

1.2 创建容器并启动

  • 转到/home/hjl/mysql5.7
## 因为后面使用$(PWD),当前目录下的意思
cd /home/hjl/mysql5.7
  • 创建并运行容器
docker run -itd --privileged=true --restart=always --name mysql5.7 -p 3308:3306 -v $PWD/data:/var/lib/mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.24

参数

说明

–name

容器名字

-p

物理机端口:容器内部端口

-e

运行参数 初始化root用户的密码

-d

后台运行 mysql/mysql-server:8 下载的镜像名字加标签

-v ./conf:/etc/mysql/conf.d

将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。//配置文件目录

-v ./logs:/logs

将主机当前目录下的 logs 目录挂载到容器的 /logs。//日志目录

-v ./data:/var/lib/mysql

将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。//数据库文件存放目录

1.2 登录mysql

  • 进入容器内
docker exec -it mysql5.7 bash
  • 使用root用户登录
root@bc5798dba70d:/#mysql -u root -p
1.2.1 登录出错
  • 因为root密码错误
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  • 将mysql设置为免密登录,在/home/hjl/conf/my.cnf增加以下语句
## 免密登录
[mysqld]
skip-grant-tables
  • 重启之后就可以成功登录
docker restart mysql5.7
  • 进入容器修改root密码
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('root') where user='root';
mysql> flush privileges;
mysql> quit
  • 记得删除刚刚my.cnf添加的内容,去除免密登录

1.3 创建允许远程访问的新用户

  • 进入mysql数据库
use mysql;
  • 创建新用户
# create user 用户名 identified by '密码'; 
mysql> create user hjl identified by 'hjl';
  • 授权给用户
# grant 权限 on 数据库名.表名 to 用户名@登录ip/域名 identified by 用户密码;
mysql> grant all privileges on *.* to 'hjl'@'%' identified by 'hjl' with grant option;
  • 执行刷新权限
flush privileges;
  • 官网可查询用户权限详情
  • 对用户做了权限变更之后,需要刷新权限

2 mysql数据库常用命令

2.1 grant添加权限常用命令

参数

说明

grant

使用grant添加权限,权限会自动叠加,不会覆盖之前授予的权限

all privileges

将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。其中,关键字 “privileges” 可以省略

on后面

表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user

to后面

将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录

identified by后面

指定用户的登录密码

with mysql_native_password

密码加密方式

with grant option

表示允许用户将自己的权限授权给其它用户

2.2 mysql常用命令

mysql常用命令

说明

select version();

查看MySQL的版本信息

select database();

查看用户创建的数据库

select user();

查看用户

show status;

查看MySQL的运行状态

show variables;

查看MySQL的系统变量