1.安装mysql5.7
1.1 拉取mysql5.7的镜像
- 可以使用docker search mysql 查看相关镜像
docker pull docker.io/centos/mysql-57-centos7
1.2 创建容器并启动
## 因为后面使用$(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@bc5798dba70d:/#mysql -u root -p
1.2.1 登录出错
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
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('root') where user='root';
mysql> flush privileges;
mysql> quit
1.3 创建允许远程访问的新用户
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的系统变量 |