#MySQL
下载镜像文件
docker pull mysql
也可以指定镜像版本
docker pull mysql:8.0.20
https://hub.docker.com/_/mysql
创建挂载目录
mkdir /data/mysql/data
mkdir /data/mysql/conf
sudo docker run --name mysql8.0 -p 13306:3306 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=demo@home -d mysql:8.0 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
进入docker内部
docker exec --it (imasge-name) bash
mysql -u username - p "database"
database 也可以不指定数据库。
创建用户
create user 'username'@'%' identified by 'pwd@home';
授权
GRANT privileges ON databasename.tablename TO 'username'@'%' WITH GRANT OPTION;
或者授予全部权限
grant all on *.* to 'username'@'%';
ALTER USER 'username'@'%' IDENTIFIED BY 'pwd@home' PASSWORD EXPIRE NEVER; -- 修改加密规则
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd@home';
REVOKE Delete ON `your database`.* FROM `username`@`%`; -- 删除权限
FLUSH PRIVILEGES; -- 刷新权限
show grants; -- 查看当前用户(自己)权限
show grants for dba@localhost; -- 查看其他 MySQL 用户权限
-- 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“
grant select on testdb.* to dba@localhost with grant option;
- all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
- on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
- to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
- identified by:指定用户的登录密码
- with grant option:表示允许用户将自己的权限授权给其它用户
- 可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。
用户详情的权限列表请参考MySQL官网说明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html