1、获取镜像
docker pull mysql
2、数据挂载
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yky --name mysqlyky mysql:8.0
这时候还不能远程连接:我们需要配置MySQL
3、进入容器
docker exec -it docker中运行数据库的名称 bash
4、配置MYSQL
配置用户:
mysql -uroot -p
use mysql;
#配置MySQL支持远程连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MySQL的密码';
#刷新数据库
flush privileges;
配置权限:
5、测试
1)测试挂载
2)如何给用户授权。
mysql> grant 权限1,权限2, ... 权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令‘;
权限1,权限2,… 权限n 代表 select、insert、update、delete、create、drop、index、alter、grant、references、reload、shutdown、process、file 等14个权限。
当权限1,权限2,… 权限n 被 all privileges 或者 all 代替时,表示赋予用户全部权限。
当 数据库名称.表名称 被 . 代替时,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是IP地址、机器名和域名。也可以用 ‘%‘ 表示从任何地址连接。
‘连接口令‘ 不能为空,否则创建失败。
举几个例子:
例一:
mysql> grant select,insert,update,delete,create,drop on db01.employee to vaiky@192.168.22.151 identified by ‘123456′;
给来自192.168.22.151的用户vaiky分配可对数据库db01的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123456。
例二:
mysql> grant all privileges on db01.* to vaiky@192.168.22.151 identified by ‘123456′;
给来自192.168.22.151的用户vaiky分配可对数据库db01所有表进行所有操作的权限,并设定口令为123456。
例三:
mysql> grant all privileges on *.* to vaiky@192.168.22.151 identified by ‘123456′;
给来自192.168.22.151的用户vaiky分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123456。
例四:
mysql> grant all privileges on *.* to vaiky@localhost identified by ‘123456′;
给本机用户vaiky分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123456。