mysql 小知识点随记

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容