您好,登錄后才能下訂單哦!
筆記內容:
13.4 mysql用戶管理
13.5 常用sql語句
13.6 mysql數據庫備份恢復
筆記日期:2017-10-31
13.4 mysql用戶管理
搭建一個網站時,后臺的應用程序會連接mysql,連接mysql就需要一個用戶密碼,但是不能讓它使用root用戶,root用戶的權限太高不安全,所以需要創建一個用戶,并授予這個用戶一些權限,你可以具體的授予這些用戶的某些權限,讓它能操作什么不能操作什么。
下面就來介紹一下如何創建mysql用戶以及授權:
創建用戶,語句如下:
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看一下:
原本的IP也能連接,這個操作是增加一個可以連接的IP:
13.5 常用sql語句
下面簡單介紹幾個mysql中常用的增刪查改語句:
select count(*) from mysql.user;
這條語句是查看mysql庫中的user表有多少行,count是一個統計行數的函數:
select * from mysql.db\G;
查看mysql庫中的db表里的所有內容:
select db from mysql.db;
查看mysql庫中的db表里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等語句盡量不要使用,如果需要使用的話記得提前備份數據,并且使用時萬分小心看仔細了別刪錯數據了,如果不小心誤操作把一個線上跑的數據庫給刪了的話,而且又沒有備份可恢復,那么就等著被開除或賠償吧。
13.6 mysql數據庫備份恢復
因為數據的重要性,所以備份與恢復技術是非掌握不可的,在這里介紹一下,備份和恢復數據庫的相關操作:
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
備份所有的庫,如果mysql中有很多數據庫,一個個去備份太麻煩,所以需要能夠備份所有數據庫的語句,語法如下:
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。