53.mysql用户管理 语句 备份与恢复

13.4 mysql用户管理html

13.5 经常使用sql语句mysql

13.6 mysql数据库备份恢复linux

扩展sql

SQL语句教程 http://www.runoob.com/sql/sql-tutorial.html数据库

什么是事务?事务的特性有哪些? http://blog.csdn.net/yenange/article/details/7556094ide

根据binlog恢复指定时间段的数据 https://blog.csdn.net/lilongsy/article/details/74726002测试

相关扩展 https://blog.csdn.net/linuxheik/article/details/71480882 ui

mysql字符集调整 http://xjsunjie.blog.51cto.com/999372/1355013this

使用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.net

相关视频 

连接:http://pan.baidu.com/s/1miFpS9M 密码:86dx 

连接:http://pan.baidu.com/s/1o7GXBBW 密码:ue2f

 

 

 

 

13.4 mysql用户管理:

 

 

MySQL建立用户以及受权:

 

~1.grant all on *.* to 'user1' @'127.0.0.1' identified by 'passwd';

grant表示受权的意思

all表示全部的权限(查看、建立、删除等等)

*.*表示对全部的库都有权限。第一个*表示库名,例如写成mysql.*即表示对mysql库里的全部的表

to 'user1'建立user1这个用户

@'127.0.0.1'能够表示指定客户端的IP(来源IP)。也就是只能经过咱们指定的这个IP来登陆。(也能够写成%即表示全部来源IP)可是,登陆的时候要-h指定这个IP。。也能够写localhost,默认sock登陆,登陆时没必要-h登陆

identified by表示设置他的密码后面的'passwd'是设置他的密码

~2.grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd'; #针对具体的权限去受权

SELECT,UPDATE,INSERT针对这些权限去受权

on db1针对db1这个库

.* db1这个库里的全部的表

to 'user2'以上条件给user2用户

@'192.168.133.1'来源IP或是'localhost'

identified by 'passwd'设置他的密码

~3.grant all on db1.* to 'user3'@'%' identified by 'passwd'; #针对全部的IP去受权

@'%'其中%表示全部IP

~4.show grants; #查看全部受权

~5.show grants for user2@192.168.133.1;

!!root下忘记某一用户的密码,可执行这一命令。复制输出的两行配置修改便可

 

 

实例:

~1.

MySQL [(none)]> grant all on *.* to 'user1'@'127.0.0.1' identified by '123456a';

Query OK, 0 rows affected (0.00 sec)

[root@axinlinux-01 ~]# mysql -uuser1 -p123456a 报错,由于默认链接是sock。要加-h登陆

ERROR 1045 (28000): Access denied for user 'user1'@'localhost' (using password: YES)

[root@axinlinux-01 ~]# mysql -uuser1 -p123456a -h127.0.0.1 由于设置了'127.0.0.1'这个IP须要-h127.0.0.1登陆才能够

Welcome to the MariaDB monitor. Commands end with ; or \g.

MySQL [(none)]> grant all on *.* to 'user1'@'localhost' identified by '123456a'; 指定IP为localhost,也就是默认sock登陆,登陆时没必要-h

Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> quit 退出测试一下

Bye

[root@axinlinux-01 ~]# mysql -uuser1 -p123456a 测试成功,没必要-h登陆

Welcome to the MariaDB monitor. Commands end with ; or \g.

 

 

 

~4.

!!假如咱们在root用户下更改user2的登陆指定IP。可是忘记了user2的密码,一下:

MySQL [(none)]> show grants for user2@192.168.133.1; 查看user2的权限

+------------------------------------------------------------------------------------------------------------------+

| Grants for user2@192.168.133.1 |

+------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'user2'@'192.168.133.1' IDENTIFIED BY PASSWORD '*59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0' |

| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.133.1' |

这两行是user2的权限。假如咱们忘了user2的密码,想要修改他的IP。直接能够在root用户下分别复制这两行到命令行,直接修改他的IP便可。以下:

MySQL [(none)]> GRANT USAGE ON *.* TO 'user2'@'127.0.0.1' IDENTIFIED BY PASSWORD '*59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0'; #分别复制这两行修改他的IP为127.0.0.1

Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'127.0.0.1';

Query OK, 0 rows affected (0.00 sec) #第二行也要复制,并修改他的IP为127.0.0.1

[root@axinlinux-01 ~]# mysql -uuser2 -ppasswd -h127.0.0.1 #测试一下,成功

Welcome to the MariaDB monitor. Commands end with ; or \g.

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

 

 

13.5 经常使用sql语句:

 

 

select查看

insert插入

update更改

关于数据库的引擎目前两种:

myisam(mysql库里默认的都是myisam。自动的统计有多少行。这种引擎select * 会很快)

innodb(用的时候才会去统计行数。对于innodb的话用select * 去查看行数,会比较费时以及浪费资源。特别是比较大的表,万不得已不要去执行)

综上因此,select * 这种操做尽可能减小这种执行

 

~1.select count(*) from mysql.user; 查看这个表的行数

mysql.user表示mysql库的user表。表与库以 . 做为分隔符

------

~2.select * from mysql.db; 查看这个表里全部的内容

select * from mysql.db\G 比较好看

~3.select db from mysql.db; 这个db是字段。就是查看这个表里db字段的

select db from mysql.db\G

~4.select db,user from mysql.db; 查看两个字段的。以,分割。查看这个表里这两个字段的

select db,user from mysql.db\G

~5.select * from mysql.db where host like '192.168.%'; 模糊搜索查看(使用like)。查看这个表里全部内容,host为192.168.开头的

select * from mysql.db where host like '192.168.%'\G

------

~6.insert into db1.t1 values (1, 'abc'); 字符串要加上单引号。数字能够不加

括号里的1与abc分别表明。输出结果的id与name

~7.update db1.t1 set name='aaa' where id=1; 更新这个表里的数据name为aaa,id为1

delete from db1.t1 where id=2; 删除这个表里条件为id=2的

------

~8.truncate table db1.t1; 清空这个表

仅仅清空这个表里的内容。表结构还留着

~9.drop table db1.t1; drop会把这个表里的数据以及结构一块儿删除

~10drop database db1; 把这个库里的全部删掉

!!truncate与drop这种删除语法尽可能少用,避免删错

 

 

实例:

~1.

MySQL [db1]> select count(*) from mysql.user;

+----------+

| count(*) |

+----------+

| 11 | 即11行

+----------+

 

~6.

MySQL [db1]> select * from db1.t1; 这个表示空的

Empty set (0.03 sec)

 

MySQL [db1]> insert into db1.t1 values (1, 'abc'); 括号里分别对应下面输出的id和name

Query OK, 1 row affected (0.04 sec)

 

MySQL [db1]> select * from db1.t1; 查看就有了

+------+------+

| id | name |

+------+------+

| 1 | abc |

+------+------+

1 row in set (0.01 sec)

 

MySQL [db1]> insert into db1.t1 values (1, 234); 再插入数字,不加单引号)

Query OK, 1 row affected (0.01 sec)

 

MySQL [db1]> select * from db1.t1; 查看输出正确

+------+------+

| id | name |

+------+------+

| 1 | abc |

| 1 | 234 |

+------+------+

2 rows in set (0.00 sec)

~7.

MySQL [db1]> update db1.t1 set name='aaa' where id=1;

Query OK, 2 rows affected (0.02 sec)

Rows matched: 2 Changed: 2 Warnings: 0

 

MySQL [db1]> select * from db1.t1; 全部的id都是1,全部的name都是aaa

+------+------+

| id | name |

+------+------+

| 1 | aaa |

| 1 | aaa |

+------+------+

2 rows in set (0.00 sec)

MySQL [db1]> delete from db1.t1 where id=1; 删除这个表里条件为id=1的

Query OK, 2 rows affected (0.01 sec)

 

MySQL [db1]> select * from db1.t1; id都为1。因此删完了

Empty set (0.00 sec)

~8.

MySQL [db1]> truncate table db1.t1; 清空这个表

Query OK, 0 rows affected (0.06 sec)

 

MySQL [db1]> select * from db1.t1; 查看已经没有内容了

Empty set (0.00 sec)

MySQL [db1]> desc db1.t1; desc看一下。表的结构还在

+-------+----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+----------+------+-----+---------+-------+

| id | int(4) | YES | | NULL | |

| name | char(40) | YES | | NULL | |

+-------+----------+------+-----+---------+-------+

2 rows in set (0.00 sec)

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

 

13.6 mysql数据库备份恢复:

 

 

 

mysqldump是备份的一个命令。能够备份一个库,也能够备份一个表

恢复的时候用mysql命令

~1.

备份库 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql

备份root用户的mysql库,重定向到/tmp/mysql.sql

mysql -uroot -pwangxin789 -e "create database mysql2"

mysql -uroot -pwangxin789 mysql2

恢复库 mysql -uroot -p123456 mysql < /tmp/mysql.sql

~2.

备份表 mysqldump -uroot -p123456 mysql user > /tmp/user.sql

在库的后面加上表,以空格分割

恢复表 mysql -uroot -p123456 mysql < /tmp/user.sql

恢复标的时候只写库的名字便可,不用写表的名字

~3.

备份全部库 mysqldump -uroot -p -A >/tmp/123.sql

使用-A(大A)即备份全部的数据库

~4.

只备份表结构 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql

使用-d(小d)及备份库里面表的结构,不备份数据

 

若是数据量太大,几个T的话。再用mysqldump就会特别的慢

 

 

~1.

[root@axinlinux-01 ~]# mysqldump -uroot -pwangxin789 mysql > /tmp/mysql.sql

直接在linux中mysqldump 这个mysql库,重定向到tmp/mysql.sql

[root@axinlinux-01 ~]# ls /tmp/mysql.sql

/tmp/mysql.sql 这个mqsql.sql就是咱们备份的文件

[root@axinlinux-01 ~]# mysql -uroot -pwangxin789 -e "create database mysql2"

咱们能够在linux下直接-e(建立)一个mysql2的库

[root@axinlinux-01 ~]# mysql -uroot -pwangxin789 mysql2 < /tmp/mysql.sql

把咱们刚备份的mysql库恢复到mysql2这个库里。使用反重定向

[root@axinlinux-01 ~]# mysql -uroot -pwangxin789 mysql2

在进入mysql的时候,在后面加上库的名字就能直接进入到mysql2库里去

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Welcome to the MariaDB monitor. Commands end with ; or \g.

MySQL [mysql2]> select database(); 查看mysql2这个库

+------------+

| database() |

+------------+

| mysql2 |

+------------+

1 row in set (0.00 sec)

MySQL [mysql2]> show tables; 查看mysql2里有没咱们刚刚恢复的这个库

+---------------------------+

| Tables_in_mysql2 |

+---------------------------+

| columns_priv |

~2.

[root@axinlinux-01 ~]# mysqldump -uroot -pwangxin789 mysql user > /tmp/user.sql

[root@axinlinux-01 ~]# mysql -uroot -pwangxin789 mysql2 < /tmp/user.sql

相关文章
相关标签/搜索