mysql使用者權限管理

來源:互聯網
上載者:User

標籤:file   rev   允許   option   lte   RoCE   soc   匹配   中文   

許可權管理:

使用者:
系統層面:使用者就是一個使用者名稱===>使用者名稱:密碼
能做什嗎?
1、登入系統
2、管理系統對象
MySQL:
不再是單純的使用者名稱和密碼
使用者名稱@‘主機範圍‘ 主機範圍被稱之為白名單
主機範圍:

本地串連:
localhost
**

遠端連線:**
10.0.0.200
oldboy.com
10.0.0.% 網段
10.0.0.5%
% XXXX 不建議用


開發申請使用者時,提供給管理:

[email protected]‘10.0.0.%‘ 密碼: xxxx

許可權: ALL privileges
SELECT, INSERT, UPDATE, DELETE, CREATE, RELOAD,
SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER,
SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, DROP
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT,
CREATE VIEW, SHOW VIEW, CREATE ROUTINE,
ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE

開發人員可能會用到的許可權:
create update insert select CREATE VIEW CREATE ROUTINE SHOW VIEW
CREATE TEMPORARY TABLES ALTER

grant 許可權 on 許可權作用範圍 to 使用者 identified by ‘密碼‘

.
py.
py.t1
grant create,update,insert,select ,CREATE VIEW on py.
to [email protected]‘192.168.12.%‘ identified by ‘123‘;

select user,host,password from mysql.user;

開發人員申請使用者流程:
1、IP段
2、使用者名稱、密碼要求
3、需要哪些許可權

MySQL中建立一個資料庫時通常是要設定字元集的,一般情況下我們會設定為UTF-8,但是通常還會出現一個資料庫校對規則,
有好多可選擇的。可選擇utf8_general_ci

這裡給出示範操作:
在建立mysql資料庫的時候如何支援UTF-8編碼

1、用工具
CHARSET字元集:選擇 utf8
COLLATION資料庫校正規則:選擇 utf8_general_ci

2、用SQL語句
GBK: CREATE DATABASE test1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
UTF-8: CREATE DATABASE test2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


建立了一個utf8的mydb的資料庫:

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_general_ci;

指定部分許可權給使用者:
增加一個test1使用者,密碼為123456,可以在任何主機上登入,並對所有資料庫有查詢,增加,修改和刪除的功能:
grant select,insert,update,delete on mydb.* to [email protected]‘%‘ identified by ‘123456‘;
FLUSH PRIVILEGES;#重新整理系統許可權表

授權test1所有許可權:
GRANT ALL ON mydb.* TO username@localhost IDENTIFIED BY password‘;

查看建立使用者的密碼:【mysql所有的使用者都儲存在mysql.user這個表中】
mysql> select user,host,password from mysql.user;
ERROR 1054 (42S22): Unknown column ‘password‘ in ‘field list‘

查看資料庫的表有哪些欄位可以查詢:authentication_string
help show;
建立
SHOW CREATE TABLE tbl_name;
select * from mysql.user ;

報錯原因解決:
mysql5.7以後mysql.user表中沒有了password欄位,而是使用authentication_string來代替。
select user,host,authentication_string from mysql.user;
等同於
use mysql;
select user,host,authentication_string from user;

update mysql.user setauthentication_string=password(“新密碼”) where User=”test” and Host=”localhost”;
flush privileges;

設定mysql的root密碼:
輸入update mysql.user set authentication_string=password(‘密碼‘)where user=‘賬戶‘;假設密碼是123。
最後輸入flush privileges;按斷行符號,告訴mysql重新整理一下系統許可權,此時修改的密碼才會生效。

update mysql.user set authentication_string=password(123456) where User="root" and Host="localhost";


mysql 跳過密碼驗證:

最好以管理員身份運行cmd,進入bin目錄下,然後停止伺服器,輸入net stop mysql,
再輸入 mysqld --skip-grant-tables (斷行符號,啟動mysql,意思是告訴mysql不需要登入驗證)。
然後關掉cmd,再重新開啟。
輸入mysql -uroot -p 連續按兩次斷行符號按鈕會直接進入mysql的控制台介面,此時發現登入 root 帳號是不要求輸入密碼的。

刪除mysql.user表中的使用者:
Delete FROM mysql.user Where User="使用者名稱" and Host=”localhost”;
flush privileges;

76855370

小節:
一、建立資料庫:

  1、 CREATE DATABASE 資料庫名;

  2、 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 資料庫名.* TO 資料庫名@localhost IDENTIFIED BY ‘密碼‘;

  3、 SET PASSWORD FOR

  ‘資料庫名‘@‘localhost‘ = OLD_PASSWORD(‘密碼‘);

  依次執行3個命令完成資料庫建立。注意:中文 “密碼”和“資料庫”是戶自己需要設定的。


二、修改密碼:

mysql -u root -p
update mysql.user setauthentication_string=password(“新密碼”) where User=”test” and Host=”localhost”;
flush privileges;
mysql5.7以後mysql.user表中沒有了password欄位,而是使用authentication_string來代替。

三、刪除使用者:
mysql -u root -p
Delete FROM mysql.user Where User="使用者名稱" and Host=”localhost”;
flush privileges;

建立使用者
命令:CREATE USER ‘username‘@‘host‘ IDENTIFIED BY ‘password‘;
刪除賬戶及許可權:
drop user 使用者名稱@’%’;
drop user 使用者名稱@ localhost;

注意:
建立一個只允許從本地登入的超級使用者yan,並允許將許可權賦予別的使用者,密碼為111
GRANT ALL PRIVILEGES ON . TO [email protected]‘localhost‘ IDENTIFIED BY ‘111‘ WITH GRANT OPTION;
GRANT命令說明:
ALL PRIVILEGES 是表示所有許可權,你也可以使用select、update等許可權提到的許可權。
ON 用來指定許可權針對哪些庫和表。
. 中前面的號用來指定資料庫名,後面的號用來指定表名
TO 表示將許可權賦予某個使用者。
[email protected]‘%‘ 表示feihong使用者,@後面接限制的主機,可以是IP、IP段、網域名稱以及%,localhost表示本地
%表示任何地方。注意:這裡%有的版本不包括本地,以前碰到過給某個使用者佈建了%允許任何地方登入,但是在本地登入不了,這個和版本有關係,遇到這個問題再加一個localhost的使用者就可以了。

WITH GRANT OPTION 這個選項表示該使用者可以將自己擁有的許可權授權給別人。
注意:經常有人在建立操作使用者的時候不指定WITH GRANT OPTION選項
導致後來該使用者不能使用GRANT命令建立使用者或者給其他使用者授權。

備忘:可以使用GRANT重複給使用者添加許可權,許可權疊加,比如你先給使用者添加了一個select許可權,
然後又給使用者添加了一個insert許可權,那麼該使用者就同時擁有了select和insert許可權。

四、為使用者授權:
設定許可權時必須給出一下資訊
1,要授與權限
2,被授予存取權限的資料庫或表
3,使用者名稱
grant和revoke可以在幾個層次上控制存取權限
1,整個伺服器,使用 grant ALL 和revoke ALL
2,整個資料庫,使用on database.*
3,特點表,使用on database.table
4,特定的列
5,特定的預存程序

user表中host列的值的意義
% 匹配所有主機
localhost localhost不會被解析成IP地址,直接通過UNIXsocket串連
127.0.0.1 會通過TCP/IP協議串連,並且只能在本機訪問;
::1 ::1就是相容支援ipv6的,表示同ipv4的127.0.0.1

授權格式:grant 許可權 on 資料庫. to 使用者名稱@登入主機 identified by “密碼”;
eg: grant all privileges on
.* to ‘root‘@‘192.168.218.128‘ identified by ‘hello‘ with grant option;
flush privileges; //要重新整理許可權

授權test使用者擁有testDB資料庫的所有許可權:
grant all privileges on testDB.* to “test”@”localhost” identified by “1234”;
flush privileges; #重新整理系統許可權表

指定部分許可權給使用者:
grant select,update on testDB.* to “test”@”localhost” identified by “1234”;
flush privileges; #重新整理系統許可權表

for example:
建立一個網站使用者(程式使用者)
建立一個一般的程式使用者,這個使用者可能只需要SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES等許可權如果有預存程序還需要加上EXECUTE許可權,一般是指定內網網段192.168.100網段。
GRANT USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON test.* TO [email protected]‘192.168.100.%‘ IDENTIFIED BY ‘[email protected]‘;

建立一個普通使用者(僅有查詢許可權)
GRANT USAGE,SELECT ON test.* TO [email protected]‘192.168.100.%‘ IDENTIFIED BY ‘[email protected]‘;

五、查看使用者的許可權:
SHOW GRANTS FOR ‘test1‘@‘%‘;
SHOW GRANTS FOR ‘root‘@‘localhost‘;
SHOW GRANTS FOR ‘webuser‘@‘192.168.100.%‘;

六、回收許可權:
REVOKE DELETE ON mydb.* FROM ‘test1‘@‘%‘;

七、刪除使用者:
注意刪除使用者不要使用DELETE直接刪除,因為使用DELETE刪除後使用者的許可權並未刪除,建立同名使用者後又會繼承以前的許可權。正確的做法是使用DROP USER命令刪除使用者,比如要刪除‘webuser‘@‘192.168.100.%‘使用者採用如下命令:
DROP USER ‘webuser‘@‘192.168.100.%‘;
大家可以採用percona-toolkit工具中的pt-show-grants工具來輔助管理mysql許可權

八、顯示目前使用者資訊:
select user();

九、MySQL許可權分配:
許可權分布 :可能設定的許可權

表許可權:
‘Select‘, ‘Insert‘, ‘Update‘, ‘Delete‘, ‘Create‘, ‘Drop‘, ‘Grant‘, ‘References‘, ‘Index‘, ‘Alter‘

列許可權:
‘Select‘, ‘Insert‘, ‘Update‘, ‘References‘

過程許可權:
‘Execute‘, ‘Alter Routine‘, ‘Grant‘


十、MySQL表和庫操作、以及Database Backup:

https://www.cnblogs.com/jiangxiaobo/p/7089345.html

十一、grant 操作 MySQL 預存程序、函數 許可權:
http://www.cnblogs.com/fslnet/p/3143344.html

mysql使用者權限管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.