mysql create db from sql_file
- 先建立个空数据库
- mysql -h host -u usr -p new_db < sql_file
创建用户
-
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
host填写ip地址,仅允许本地就用localhost,无要求用通配符%
授予用户权限
-
GRANT privileges ON databasename.tablename TO 'username'@'host'
数据库跟数据表都可以用通配符*,privileges使用 all表明所有权限。
-
privileges:SELECT,INSERT,UPDATE。。。。
上述命令后缀 WITH GRANT OPTION 则允许该用户给其他用户授权。
更改密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
查看授权
- 具体信息可以用命令
SHOW GRANTS FOR 'user'@'%';
删除用户
DROP USER 'username'@'host';
取消用户权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
- 注意:
- 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%',则在使用REVOKE SELECT ON . FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON . TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select权限。
数据导出
- 由于想要搭建一个测试服务器,而线上服务器的数据很大,就想仅仅让测试服务器数据库结构与线上一致即可。而数据可以日后加上去。
- 将线上数据库的结构导出到文件
mysqldump -d -h host -u user -ppassword --set-gtid-purged=off database_name > tmp.sql
- 如上即可将host上的database_name的结构导出到执行目录下的tmp.sql文件中。
- 注:其中-d 参数加上可以表明仅仅导出数据库结构,而不导数据。若不加-d则是完整地将数据库导出来。
关于GTID是5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。
- 官方给的:A global transaction identifier (GTID) is a unique identifier created and associated with each transaction committed on the server of origin (master).
所以可能是因为在一个数据库里面唯一,但是当导入其他的库就有可能重复。所有会有一个提醒。
可以通过添加--set-gtid-purged=off 或者–gtid-mode=OFF这两个参数设置。
个人认为是在导入库中重新生产GTID,而不用原来的。
本文参考
链接:https://www.jianshu.com/p/d7b9c468f20d