mysql2014授权设置_mysql权限管理(2014-09-15)
本文比較碎片化,不過以問答的形式比較容易理解。
如何查看mysql的當前登錄的用戶?
select user();
mysql?-hlocalhost?-uroot ?與
root@192.168.11.100?區(qū)別?
mysql?-hlocalhost?-uroot只能在本地進行登錄,而
root@192.168.11.100不能在本地登錄。
mysql匿名賬戶
mysql的匿名賬戶即user為空的行,對應的為空的
匿名賬戶在最新的版本中只能有對test進行操作,可以進行創(chuàng)建表、刪除表等操作,之前的匿名用戶的操作權限比較多,所以建議在安裝完mysql之后第一件事就是把不用的用戶都刪除,只保留
root@localhost
可以使用如下語句:
delete from mysql.user where user != 'root' or host ! ='localhost';
flush privileges; // ?修改后的mysql用戶信息會暫時存在內存中,為了即時生效,需要使用flush privileges將內存中權限的數據刷新到磁盤中。
如何創(chuàng)建一個新的用戶?
創(chuàng)建新的用戶常用的有兩種方法,即create user 、grant方法,個人常用的是grant方法,create user方法,在創(chuàng)建完用戶之后還需要再進行授權,需要多些操作。當然也可以直接對mysql.user表進行insert操作,建議不進行這樣操作,之前有進行過這樣的操作,有出現權限問題,即root用戶下只有沒有mysql庫。
create user 例子:
create user ' t_user'@'192.168.1.15' identified by '123456';
flush privileges;
這樣創(chuàng)建之后只能看到一個庫,其他庫是看不見的
grant 例子:
grant select,insert on dbanme.* to username@'ip地址' identified by '密碼';
flush privileges;
如:
grant?select?on?daosen.*?to?'admin'@'192.168.11.212' ?identified by '123456';
使用grant時需要注意的是,如果賬號存在,則添加權限,若沒有用戶則創(chuàng)建用戶并賦權限。
若admin用戶存在,再使用grant 中使用identified by 會覆蓋之前密碼。如
grant?select?on?daosen.*?to?'admin'@'192.168.11.212' ?identified by 'admin';這時的admin的密碼就會被修改為admin 。如下圖:
admin授權密碼為123456
登錄:
root用戶登錄下再對admin用戶授同樣的權限,只修改下密碼:
使用admin密碼123456登錄,報密碼錯誤:
使用admin密碼admin登錄,正常登錄:
注:添加完一個用戶之后需要到mysql.user表中確認用戶是否添加成功,是否有相關的權限。
如何更改用戶密碼?
方法一:
(推薦使用)
set?password?for?‘wubx’@’localhost’?=?password(‘NewPass’);
flush privileges;
方法二:(不推薦)
update mysql.user set password=password(‘密碼’) where user=’用戶名’ and host=’主機名’;
flush privileges;
方法三:
mysqladmin?–u用戶名 password?‘新密碼’–hhost_name
如何設置mysql用戶的過期?
mysql賬戶、密碼過期設置,5.6.17之后的功能
Alter user 帳號名 password expire;
如何修改用戶名?
rename user 舊賬號@舊IP to 新賬號@新IP
通過這命令不僅可以修改用戶名,同時也可以修改用戶對應的IP地址
mysql用戶名最多只能支持多少個字符?
mysql用戶名最多只能支付16個字符,若超過可能會出現內存溢出現象,我們規(guī)定mysql的用戶名稱以字母開頭。
MySQL的帳號權限管理最低的要求?
保持最小權限授權,操作最少的用戶。另外對生產庫需要做兩件事
1. 只保留root@localhost用戶
2.刪除test數據 ,要把test庫刪掉,truncate mysql.db;需要再執(zhí)行下flush privileges;
為什么不用視圖?
mysql中沒有物化視圖,不會帶來查詢性能的提升,也只是查詢語句而已。
如何創(chuàng)建具有可以將自己的權限再授權給其他用戶的新用戶?
grant all priviliges on *.* ? to ?admin@'localhost' with grant option;
需要加上with grant option;即可
生產環(huán)境中是否保留test庫?
建議刪除test庫,另外有一個特別的地方,凡以test開頭的數據,新建的沒授權的用戶都可以在上面進行創(chuàng)建表等操作。可以查看下這類庫的權限。
mysql庫中的host表是否有用?
目前沒有發(fā)過這表的用處,可能后期官方會去除,但目前的版本中若沒有這個表數據庫會無法啟動。
如何收回權限?
revoke?delete from wubx@192.168.11.212;
revoke??delete?on?daosen.*?from?wubx@localhost;
注:使用revoke前一定要查下這個用戶是否有這個權限
對mysql的master及slave采用什么權限?
只要
REPLICATION SLAVE權限,如下:
GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BY '123456';
對生產環(huán)境中應用采用什么權限?
個人覺得主要是insert、update、delete、select操作,一般就可以了。
show processlist與 ?show?full?processlist有什么區(qū)別嗎 ?
show full processlist 較長的SQL不截斷,show processlist會進行截斷。
show processlist各字段的意義?
.SHOW?PROCESSLIST作用: 顯示了正在運行的進程線程。
. SHOW?PROCESSLIST?將生成以下列:
. –??Id:連接標識符
. –??User:發(fā)出語句的?MySQL?用戶
. –??Host:發(fā)出語句的客戶機的主機名
. –??db:選擇默認數據庫,否則為?NULL
. –??Command:線程正在執(zhí)行的命令類型
. –??Time:線程處于當前狀態(tài)的時間(秒)
. –??State:指示線程正在執(zhí)行的內容的操作、事件或狀態(tài)
. –??Info:線程正在執(zhí)行的語句;否則為?NULL
常出現的權限問題及解決方法
忘記密碼怎么辦?
1.
把skip-grant-tables 這個配置文件my.cnf到加到參數文件,重啟,然后更改密碼
把參數去掉,再重啟就OK了,連接到mysql中
2.進入mysql
,操作mysql.user
update mysql.user set password=pasword('newpassord') where user=XXXX and host=XXXX;
flush?privileges;
生產對于已經授權的用戶列表,拒絕某臺機器連接?
基本環(huán)境介紹服務帳號??app_dev@’192.168.10.%’ ,
基于這樣的用戶: 192.168.10.%用戶段的IP都可以連接進來,但運行中發(fā)現某臺機器不是我們要的機器或是這臺機器經常干一些讓我們喜歡的事,假設這個IP是:192.168.10.11,連接MySQL的IP還有十幾個,我們怎么拒絕192.168.10.11這個IP連接呢?
對
192.168.10.11的IP的進行特別再賦權限,
這樣可以只有app_dev@'192.168.10.11' 可以使用,即最小匹配。如:
對某一段的IP賦:grant all privileges on *.* to admin@'192.168.10.%' identified by '123456';
進行限制:
grant all privileges on *.* to admin@'192.168.10.11' ;
連接數統(tǒng)計
通過
information_schema.processlist分析數據庫的當前連接數,分析哪個用戶、哪個主機、哪個IP等。
當前的連接數:
select?count(*)?from?information_schema.processlist;
select ?* from?information_schema.processlist; //等價于: show processlist
若只要輸出 ip:port 的形式,substring_index(字符串,分割符,需要的第幾個字段)
select substring_index(host,':', 1) from information_schema.processlist;
統(tǒng)計每個IP連接數:
select substring_index(host,":", 1) ip, count(*) from information_schema.processlist group by ip;
到庫級別的ip連接數查看: select?db,?substring_index(host,":",?1)?ip,?count(*)??from?information_schema.processlist??group?by?db,?ip;
總結
以上是生活随笔為你收集整理的mysql2014授权设置_mysql权限管理(2014-09-15)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective C++ 英中简繁术语
- 下一篇: dd命令烧写superboot.bin