mysql新建用戶,修改權(quán)限 (1)登錄:mysql -u root -p (2)查看現(xiàn)有用戶(mysql8.0.1) mysql> select host,user,authentication_string from mysql.user; +-----------+------------------+----------------------------------------------------------------+ | host | user | authentication_string | +-----------+------------------+----------------------------------------------------------------+ | localhost | mysql.infoschema | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | root | $A$005$e!42 )Tf+4M{4W>MkFY9ktIVPhgVemeQsSQnuiGLRiH/909Zyaj9XF3/3Yk2 | +-----------+------------------+----------------------------------------------------------------+ (3)新建用戶 格式:create user "username"@"host" identified by "password"; eg: 1.mysql->create user 'test'@'localhost' identified by '123'; 2.mysql->create user 'test'@'192.168.7.22' identified by '123'; 3.mysql->create user 'test'@'%' identified by '123'; /*host="localhost"為本地登錄用戶,host="ip"為ip地址登錄,host="%",為外網(wǎng)ip登錄*/ (4)刪除用戶 格式:drop user 'username'@'host'; (5)授權(quán) 格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD'; 1. GRANT命令說明: priveleges(權(quán)限列表),可以是all priveleges, 表示所有權(quán)限,也可以是select、update等權(quán)限,多個權(quán)限的名詞,相互之間用逗號分開。 on用來指定權(quán)限針對哪些庫和表。 *.* 中前面的*號用來指定數(shù)據(jù)庫名,后面的*號用來指定表名。 to 表示將權(quán)限賦予某個用戶, 如 jack@'localhost' 表示jack用戶,@后面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方。注意:這里%有的版本不包括本地,以前碰到過給某個用戶設(shè)置了%允許任何地方登錄,但是 在本地登錄不了,這個和版本有關(guān)系,遇到這個問題再加一個localhost的用戶就可以了。 identified by指定用戶的登錄密碼,該項可以省略。 WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權(quán)限授權(quán)給別人。注意:經(jīng)常有人在創(chuàng)建操作用戶的時候不指定WITH GRANT OPTION選項導致后來該用戶不能使用GRANT命令創(chuàng)建用戶或者給其它用戶授權(quán)。 備注:可以使用GRANT重復(fù)給用戶添加權(quán)限,權(quán)限疊加,比如你先給用戶添加一個select權(quán)限,然后又給用戶添加一個insert權(quán)限,那么該用戶就同時擁有了select和insert權(quán)限。 2.授權(quán)原則說明: 權(quán)限控制主要是出于安全因素,因此需要遵循一下幾個經(jīng)驗原則: a、只授予能滿足需要的最小權(quán)限,防止用戶干壞事。比如用戶只是需要查詢,那就只給select權(quán)限就可以了,不要給用戶賦予update、insert或者delete權(quán)限。 b、創(chuàng)建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內(nèi)網(wǎng)IP段。 c、初始化數(shù)據(jù)庫的時候刪除沒有密碼的用戶。安裝完數(shù)據(jù)庫的時候會自動創(chuàng)建一些用戶,這些用戶默認沒有密碼。 d、為每個用戶設(shè)置滿足密碼復(fù)雜度的密碼。 e、定期清理不需要的用戶。回收權(quán)限或者刪除用戶。 eg: /*授予用戶通過外網(wǎng)IP對于該數(shù)據(jù)庫的全部權(quán)限*/ grant all privileges on `test`.* to 'test'@'%' ; /*授予用戶在本地服務(wù)器對該數(shù)據(jù)庫的全部權(quán)限*/ grant all privileges on `test`.* to 'test'@'localhost'; grant select on test.* to 'user1'@'localhost'; /*給予查詢權(quán)限*/ grant insert on test.* to 'user1'@'localhost'; /*添加插入權(quán)限*/ grant delete on test.* to 'user1'@'localhost'; /*添加刪除權(quán)限*/ grant update on test.* to 'user1'@'localhost'; /*添加權(quán)限*/ flush privileges; /*刷新權(quán)限*/ (6)查看權(quán)限 show grants; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+ 2 rows in set (0.00 sec) 查看某個用戶的權(quán)限: show grants for 'jack'@'%'; +-----------------------------------------------------------------------------------------------------+ | Grants for jack@% | +-----------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'jack'@'%' IDENTIFIED BY PASSWORD '*9BCDC990E611B8D852EFAF1E3919AB6AC8C8A9F0' | +-----------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) (7)刪除權(quán)限 revoke privileges on databasename.tablename from 'username'@'host'; revoke delete on test.* from 'jack'@'localhost'; (8)更改用戶名 mysql> rename user 'jack'@'%' to 'jim'@'%'; (9)修改密碼 1.用set password命令 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); Query OK, 0 rows affected (0.00 sec) 2.用mysqladmin [root@rhel5 ~]# mysqladmin -uroot -p123456 password 1234abcd 備注: 格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼 3.用update直接編輯user表 (10)pycharm中python3.6+pymysql+mysql8.0.1連接報錯 pymysql.err.OperationalError: (1045, u"Access denied for user 'root'@'localhost' (using password: No)") 解決方法: 在cmd命令行連接mysql, 通過mysql -u root -p dong1990 然后輸入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dong1990'; |
|