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

相關文章
相關標籤/搜索