笔记内容:
笔记日期:2017-10-31
搭建一个网站时,后台的应用程序会连接MysqL,连接MysqL就需要一个用户密码,但是不能让它使用root用户,root用户的权限太高不安全,所以需要创建一个用户,并授予这个用户一些权限,你可以具体的授予这些用户的某些权限,让它能操作什么不能操作什么。
创建用户,语句如下:
grant all on *.* to 'user1'@'192.168.77.130' identified by '123456a';
常识:这种grant语句是不会记录到命令历史里的,因为不安全。
现在就创建好一个user1用户了,因为创建这个用户的时候是指定了来源IP的,所以在登录这个用户时需要使用-h指定IP:
如果想要创建一个可以本地连接的MysqL用户,在创建时指定localhost就可以了:
grant all on *.* to 'user1'@'localhost' identified by '123456a';
创建为可以本地连接的用户,登录时就不需要使用-h指定来源IP了:
使用show grants; 可以看到当前用户拥有哪些权限:
如果想看具体的某个用户的话,在命令后加上for 用户名@登录方式 即可,示例:
show grants for user1@'localhost';
现在我们查看一下user2的权限:
可以看到user2具体能执行的sql语句,和可以操作哪个库的哪些表。
当你想增加用户的连接IP或者其他权限时,就可以直接复制show grants命令显示出来的语句,然后更改IP即可,例如我要让user2能使用192.168.77.139这个IP登录:
然后再show grants看一下:
13.5 常用sql语句
下面简单介绍几个MysqL中常用的增删查改语句:
select count(*) from MysqL.user;
这条语句是查看MysqL库中的user表有多少行,count是一个统计行数的函数:
select * from MysqL.db\G;
select db from MysqL.db;
select db,user from MysqL.db;
查看MysqL库中的db表里db和user 字段的所有内容:
select * from MysqL.db where host like '192.168.%'\G;
查看MysqL库中的db表里host字段为192.168.开头的所有内容,like是模糊查询的关键字,where是指定的一个条件:
insert into db1.t1 values (1, 'abc');
insert 语句是用来插入数据的:
update db1.t1 set name='aaa' where id=1;
update 语句是用来修改或者说更新数据的:
truncate table db1.t1;
清空数据,能够把一个表格里的所有数据都清空:
drop table db1.t1;
drop 是用来删除结构的,drop的删除不仅仅删除数据,会把结构也一并删除,以上这条drop就是把db1库中的t1表给删除掉:
10. drop database db1;
drop和truncate、delete语句不同的是,前者删除在整个结构,后者仅仅删除结构中的数据。
谨记一点,drop和truncate、delete等语句尽量不要使用,如果需要使用的话记得提前备份数据,并且使用时万分小心看仔细了别删错数据了,如果不小心误操作把一个线上跑的数据库给删了的话,而且又没有备份可恢复,那么就等着被开除或赔偿吧。
因为数据的重要性,所以备份与恢复技术是非掌握不可的,在这里介绍一下,备份和恢复数据库的相关操作:
MysqLdump是一个备份的命令,可以备份一个库,也可以备份一个表:
备份库,语法如下:
MysqLdump -uroot -p123456 MysqL > /tmp/MysqL.sql
MysqL -uroot -p123456 MysqL2 < /tmp/MysqL.sql
进入到MysqL2中,可以看到数据已经恢复到这个库中了:
从以上备份和恢复数据库可见,其实就是一个重定向的应用,重定向出去叫备份,重定向进来叫恢复。
MysqLdump -uroot -p123456 MysqL user > /tmp/user.sql
可以使用less命令查看一下user.sql文件,会发现里面都是些sql语句:
通过sql语句逐个把数据恢复回去。
MysqL -uroot -p123456 MysqL < /tmp/user.sql
MysqLdump -uroot -p -A >/tmp/123.sql
-A是all,所有的意思
可以查看到这个备份文件就比较大了,有1.3M:
只备份表结构,如果你不需要数据的情况下,就可以只备份表结构,使用-d选项,语法如下:
MysqLdump -uroot -p123456 -d MysqL > /tmp/MysqL.sql
然后你可以使用less查看备份文件的内容,会发现没有insert语句只有drop和create语句
MysqLdump 只适合数据量不大的备份,如果数据库中的数据库很大的话,就不适合使用MysqLdump 了,使用MysqLdump 的话备份会很慢,关于如何备份数量大的数据库可以参考以下扩展内容:
扩展
sql语句教程
https://blog.51cto.com/zt/206
什么是事务?事务的特性有哪些?
http://blog.csdn.net/yenange/article/details/7556094
根据binlog恢复指定时间段的数据
http://www.centoscn.com/MysqL/2015/0204/4630.html
MysqL字符集调整
http://xjsunjie.blog.51cto.com/999372/1355013
使用xtrabackup备份innodb引擎的数据库innobackupex备份Xtrabackup增量备份:
http://zhangguangzhi.top/2017/08/23/innobackex%E5%B7%A5%E5%85%B7%E5%A4%87%E4%BB%BDMysqL%E6%95%B0%E6%8D%AE/#%E4%B8%89%E3%80%81%E5%BC%80%E5%A7%8B%E6%81%A2%E5%A4%8DMysqL
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。