您好,登錄后才能下訂單哦!
筆記內(nèi)容:
13.4 mysql用戶管理
13.5 常用sql語句
13.6 mysql數(shù)據(jù)庫備份恢復(fù)
筆記日期:2017-10-31
13.4 mysql用戶管理
搭建一個(gè)網(wǎng)站時(shí),后臺(tái)的應(yīng)用程序會(huì)連接mysql,連接mysql就需要一個(gè)用戶密碼,但是不能讓它使用root用戶,root用戶的權(quán)限太高不安全,所以需要?jiǎng)?chuàng)建一個(gè)用戶,并授予這個(gè)用戶一些權(quán)限,你可以具體的授予這些用戶的某些權(quán)限,讓它能操作什么不能操作什么。
下面就來介紹一下如何創(chuàng)建mysql用戶以及授權(quán):
創(chuàng)建用戶,語句如下:
grant all on *.* to 'user1'@'192.168.77.130' identified by '123456a';
常識:這種grant語句是不會(huì)記錄到命令歷史里的,因?yàn)椴话踩?/span>
現(xiàn)在就創(chuàng)建好一個(gè)user1用戶了,因?yàn)閯?chuàng)建這個(gè)用戶的時(shí)候是指定了來源IP的,所以在登錄這個(gè)用戶時(shí)需要使用-h指定IP:
如果想要?jiǎng)?chuàng)建一個(gè)可以本地連接的mysql用戶,在創(chuàng)建時(shí)指定localhost就可以了:
grant all on *.* to 'user1'@'localhost' identified by '123456a';
創(chuàng)建為可以本地連接的用戶,登錄時(shí)就不需要使用-h指定來源IP了:
使用show grants; 可以看到當(dāng)前用戶擁有哪些權(quán)限:
如果想看具體的某個(gè)用戶的話,在命令后加上for 用戶名@登錄方式 即可,示例:
show grants for user1@'localhost';
我們再創(chuàng)建一個(gè)用戶,給這個(gè)用戶授予具體對某個(gè)庫的操作權(quán)限:
現(xiàn)在我們查看一下user2的權(quán)限:
可以看到user2具體能執(zhí)行的sql語句,和可以操作哪個(gè)庫的哪些表。
當(dāng)你想增加用戶的連接IP或者其他權(quán)限時(shí),就可以直接復(fù)制show grants命令顯示出來的語句,然后更改IP即可,例如我要讓user2能使用192.168.77.139這個(gè)IP登錄:
然后再show grants看一下:
原本的IP也能連接,這個(gè)操作是增加一個(gè)可以連接的IP:
13.5 常用sql語句
下面簡單介紹幾個(gè)mysql中常用的增刪查改語句:
select count(*) from mysql.user;
這條語句是查看mysql庫中的user表有多少行,count是一個(gè)統(tǒng)計(jì)行數(shù)的函數(shù):
select * from mysql.db\G;
查看mysql庫中的db表里的所有內(nèi)容:
select db from mysql.db;
查看mysql庫中的db表里db字段的所有內(nèi)容:
select db,user from mysql.db;
查看mysql庫中的db表里db和user 字段的所有內(nèi)容:
select * from mysql.db where host like '192.168.%'\G;
查看mysql庫中的db表里host字段為192.168.開頭的所有內(nèi)容,like是模糊查詢的關(guān)鍵字,where是指定的一個(gè)條件:
insert into db1.t1 values (1, 'abc');
insert 語句是用來插入數(shù)據(jù)的:
update db1.t1 set name='aaa' where id=1;
update 語句是用來修改或者說更新數(shù)據(jù)的:
truncate table db1.t1;
清空數(shù)據(jù),能夠把一個(gè)表格里的所有數(shù)據(jù)都清空:
drop table db1.t1;
drop 是用來刪除結(jié)構(gòu)的,drop的刪除不僅僅刪除數(shù)據(jù),會(huì)把結(jié)構(gòu)也一并刪除,以上這條drop就是把db1庫中的t1表給刪除掉:
10. drop database db1;
這是刪除數(shù)據(jù)庫的,同樣的也是刪除結(jié)構(gòu):
drop和truncate、delete語句不同的是,前者刪除在整個(gè)結(jié)構(gòu),后者僅僅刪除結(jié)構(gòu)中的數(shù)據(jù)。
謹(jǐn)記一點(diǎn),drop和truncate、delete等語句盡量不要使用,如果需要使用的話記得提前備份數(shù)據(jù),并且使用時(shí)萬分小心看仔細(xì)了別刪錯(cuò)數(shù)據(jù)了,如果不小心誤操作把一個(gè)線上跑的數(shù)據(jù)庫給刪了的話,而且又沒有備份可恢復(fù),那么就等著被開除或賠償吧。
13.6 mysql數(shù)據(jù)庫備份恢復(fù)
因?yàn)閿?shù)據(jù)的重要性,所以備份與恢復(fù)技術(shù)是非掌握不可的,在這里介紹一下,備份和恢復(fù)數(shù)據(jù)庫的相關(guān)操作:
mysqldump是一個(gè)備份的命令,可以備份一個(gè)庫,也可以備份一個(gè)表:
備份庫,語法如下:
mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
恢復(fù)庫,將備份文件里的內(nèi)容重定向到一個(gè)空的數(shù)據(jù)庫中,語法如下:
mysql -uroot -p123456 mysql2 < /tmp/mysql.sql
進(jìn)入到mysql2中,可以看到數(shù)據(jù)已經(jīng)恢復(fù)到這個(gè)庫中了:
從以上備份和恢復(fù)數(shù)據(jù)庫可見,其實(shí)就是一個(gè)重定向的應(yīng)用,重定向出去叫備份,重定向進(jìn)來叫恢復(fù)。
備份表,除了備份整個(gè)數(shù)據(jù)庫之外,還能針對數(shù)據(jù)庫中的某個(gè)表進(jìn)行備份,指定庫名和表名即可,語法如下:
mysqldump -uroot -p123456 mysql user > /tmp/user.sql
可以使用less命令查看一下user.sql文件,會(huì)發(fā)現(xiàn)里面都是些sql語句:
通過sql語句逐個(gè)把數(shù)據(jù)恢復(fù)回去。
恢復(fù)表,和恢復(fù)庫一樣的,把備份的文件內(nèi)容重定向回去,語法如下:
mysql -uroot -p123456 mysql < /tmp/user.sql
備份所有的庫,如果mysql中有很多數(shù)據(jù)庫,一個(gè)個(gè)去備份太麻煩,所以需要能夠備份所有數(shù)據(jù)庫的語句,語法如下:
mysqldump -uroot -p -A >/tmp/123.sql
-A是all,所有的意思
可以查看到這個(gè)備份文件就比較大了,有1.3M:
只備份表結(jié)構(gòu),如果你不需要數(shù)據(jù)的情況下,就可以只備份表結(jié)構(gòu),使用-d選項(xiàng),語法如下:
mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql
然后你可以使用less查看備份文件的內(nèi)容,會(huì)發(fā)現(xiàn)沒有insert語句只有drop和create語句
mysqldump 只適合數(shù)據(jù)量不大的備份,如果數(shù)據(jù)庫中的數(shù)據(jù)庫很大的話,就不適合使用mysqldump 了,使用mysqldump 的話備份會(huì)很慢,關(guān)于如何備份數(shù)量大的數(shù)據(jù)庫可以參考以下擴(kuò)展內(nèi)容:
擴(kuò)展
SQL語句教程
https://blog.51cto.com/zt/206
什么是事務(wù)?事務(wù)的特性有哪些?
http://blog.csdn.net/yenange/article/details/7556094
根據(jù)binlog恢復(fù)指定時(shí)間段的數(shù)據(jù)
http://www.centoscn.com/mysql/2015/0204/4630.html
mysql字符集調(diào)整
http://xjsunjie.blog.51cto.com/999372/1355013
使用xtrabackup備份innodb引擎的數(shù)據(jù)庫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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。