mysql用户管理、常用sql语句、mysql数据库备份恢复

6月20日任务

13.4 mysql用户管理
13.5 常用sql语句
13.6 mysql数据库备份恢复

扩展
SQL语句教程 http://www.runoob.com/sql/sql-tutorial.html
什么是事务?事务的特性有哪些? 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
相关视频
链接:http://pan.baidu.com/s/1miFpS9M 密码:86dx
链接:http://pan.baidu.com/s/1o7GXBBW 密码:ue2f

 

13.4 mysql用户管理

创建mysql用户和授权,对单独的用户进行授权,因为不可能每一个用户都去连接root,root的权限是很大的,如果让每个用户都能够使用root,这样是非常不安全的。

 

创建用户:

[root@jimmylinux-001 ~]# mysql -uroot -pabcd1234  登录到mysql

mysql> grant all on *.* to 'user1'@'127.0.0.1' identified by '123456a';    
Query OK, 0 rows affected (0.03 sec)

grant是授权,all表示所有权限,前面的*表示库名,例如mysql.*就表示mysql库名下面所有的表,*.*就是所有库名的表。@后面指定来源IP,也可以使用%表示所有IP。

也可以指定localhost方式登录,首先用root登录,然后把127.0.0.1改为localhost,这样就可以不用加-h127.0.0.1也能够登录了。

可以针对具体的权限去授权

grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.52.1' identified by 'passwd';

还可以针对所有的IP去授权

grant all on db1.* to 'user3'@'%' identified by 'passwd';

mysql> show grants for user1@'127.0.0.1';  查看指定用户的授权是什么
+-----------------------------------------------------------------------------------------------------------------------+
| Grants for user1@127.0.0.1                                                                                            |
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user1'@'127.0.0.1' IDENTIFIED BY PASSWORD '*B012E8731FF1DF44F3D8B26837708985278C3CED' |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

查看user2的授权

mysql> grant all on *.* to 'user2'@'192.168.52.1' identified by '123456a';    首先要创建一个user2用户
Query OK, 0 rows affected (0.00 sec)

  mysql> show grants for user2@'192.168.52.1';  查看user2用户的授权
 +--------------------------------------------------------------------------------------------------------------------------+
 | Grants for user2@192.168.52.1 |
 +--------------------------------------------------------------------------------------------------------------------------+
 | GRANT ALL PRIVILEGES ON *.* TO 'user2'@'192.168.52.1' IDENTIFIED BY PASSWORD '*B012E8731FF1DF44F3D8B26837708985278C3CED' |
 | GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.52.1' |
 +--------------------------------------------------------------------------------------------------------------------------+
 2 rows in set (0.00 sec)

 

如果遇到IP不够用,用户除了要在192.168.52.1上登录,还想在192.168.52.2的IP登录,这个时候只需要把授权的命令全部执行一遍,只需要把IP改为192.168.52.2

如果需要复制一个用户,假如知道用户名,但是密码不知道,就可以通过上面的方式进行设置,把2条命令复制执行,更改一下IP就可以了。

 

13.5 常用sql语句

select count(*) from mysql.user;                               查看这个表的行数,库和表中间有一个.作为分隔符。
select * from mysql.db;                                              查看所有内容,如果一个表内容很多,不建议使用*查看所有。
select db from mysql.db;                                           查看字段
select db,user from mysql.db;                                   查看2个字段
select * from mysql.db where host like '192.168.%'; 模糊查询,使用这样方式可以树形显示
insert into db1.t1 values (1, 'abc');                            插入字段内容
update db1.t1 set name='aaa' where id=1;              更新字段内容
truncate table db1.t1;                                                清空一个表里面的内容,但是表的结构框架还会保留。
drop table db1.t1;                                                      彻底清空一个表
drop database db1;                                                   彻底清空一个数据库

 

查看表行数

查看所有内容

mysql> select * from mysql.db\G;

查看字段

插入字段内容

更新字段内容

删除一个表

清空一个表里面的内容,但是表的结构框架还会保留。

彻底清空一个表和一个数据库

在做彻底清空表或者数据库时,一定要非常谨慎,如果没有做备份,最好不要轻易执行清空操作。

 

13.6 mysql数据库备份恢复

为了避免误操作删除一个表或数据库,平常一定要养成数据库备份的习惯。

备份数据库

[root@jimmylinux-001 ~]# mysqldump -uroot -pabcd1234 mysql > /tmp/mysqlbak.sql
Warning: Using a password on the command line interface can be insecure.

恢复数据库

[root@jimmylinux-001 ~]# mysql -uroot -pabcd1234 -e "create database mysql2"    创建一个新的数据库mysql2
Warning: Using a password on the command line interface can be insecure.

[root@jimmylinux
-001 ~]# mysql -uroot -pabcd1234 mysql2 < /tmp/mysqlbak.sql 把之前备份的数据库恢复到新建的数据库mysql2里面去 Warning: Using a password on the command line interface can be insecure.

备份一个表

[root@jimmylinux-001 ~]# mysqldump -uroot -pabcd1234 mysql user > /tmp/user.sql
Warning: Using a password on the command line interface can be insecure.

恢复一个表

[root@jimmylinux-001 ~]# mysql -uroot -pabcd1234 mysql2 < /tmp/user.sql
Warning: Using a password on the command line interface can be insecure.

备份所有数据库

[root@jimmylinux-001 ~]# mysqldump -uroot -pabcd1234 -A >/tmp/mysql_all.sql
Warning: Using a password on the command line interface can be insecure.

只备份表结构

[root@jimmylinux-001 ~]# mysqldump -uroot -pabcd1234 -d mysql2 > /tmp/mysql2.sql
Warning: Using a password on the command line interface can be insecure.

 

总结:

-A  备份所有的数据库

-d  备份数据库里面的表结构,不备份数据。

备份一个表,先库再表,中间用空格做一个分隔,恢复的时候只需要写mysql就行了,不用写表。

MySQLdump 只适合数据量不大的,如果数据量很大有上百G或者上T的数据量就不适用了。

 

posted @ 2018-06-20 19:58  吉米乐享驿站  阅读(617)  评论(0编辑  收藏  举报