帳戶管理python
-
在生產環境下操做數據庫時,絕對不可使用root帳戶鏈接,而是建立特定的帳戶,授予這個帳戶特定的操做權限,而後鏈接進行操做,主要的操做就是數據的crud
-
MySQL帳戶體系:根據帳戶所具備的權限的不一樣,MySQL的帳戶能夠分爲如下幾種
-
服務實例級帳號:,啓動了一個mysqld,即爲一個數據庫實例;若是某用戶如root,擁有服務實例級分配的權限,那麼該帳號就能夠刪除全部的數據庫、連同這些庫中的表
-
數據庫級別帳號:對特定數據庫執行增刪改查的全部操做
-
數據表級別帳號:對特定表執行增刪改查等全部操做
-
字段級別的權限:對某些表的特定字段進行操做
-
存儲程序級別的帳號:對存儲程序進行增刪改查的操做
-
帳戶的操做主要包括建立帳戶、刪除帳戶、修改密碼、受權權限等
注意:
-
進行帳戶操做時,須要使用root帳戶登陸,這個帳戶擁有最高的實例級權限
-
一般都使用數據庫級操做權限
授予權限
須要使用實例級帳戶登陸後操做,以root爲例
主要操做包括:
1. 查看全部用戶
desc user;
查看全部用戶
select host,user,authentication_string from user;
結果
mysql> select host,user,authentication_string from user;
+-----------+------------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+------------------+-------------------------------------------+
| localhost | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | *EFED9C764966EDB33BB7318E1CBD122C0DFE4827 |
+-----------+------------------+-------------------------------------------+
3 rows in set (0.00 sec)
2. 建立帳戶、受權
2.1 建立帳戶&受權
grant 權限列表 on 數據庫 to '用戶名'@'訪問主機' identified by '密碼';
2.2 示例1
建立一個laowang的帳號,密碼爲123456,只能經過本地訪問, 而且只能對jing_dong數據庫中的全部表進行讀操做
step1:使用root登陸
mysql -uroot -p
回車後寫密碼,而後回車
step2:建立帳戶並授予全部權限
grant select on jing_dong.* to 'laowang'@'localhost' identified by '123456';
說明
-
能夠操做python數據庫的全部表,方式爲:jing_dong.*
-
訪問主機一般使用 百分號% 表示此帳戶可使用任何ip的主機登陸訪問此數據庫
-
訪問主機能夠設置成 localhost或具體的ip,表示只容許本機或特定主機訪問
-
查看用戶有哪些權限
show grants for laowang@localhost;
step3:退出root的登陸
quit
step4:使用laowang帳戶登陸
mysql -ulaowang -p
回車後寫密碼,而後回車
2.3 示例2
建立一個laoli的帳號,密碼爲12345678,能夠任意電腦進行連接訪問, 而且對jing_dong數據庫中的全部表擁有全部權限
grant all privileges on jing_dong.* to "laoli"@"%" identified by "12345678"
帳戶操做
1. 修改權限
grant 權限名稱 on 數據庫 to 帳戶@主機 with grant option;
flush privileges 刷新權限
2. 修改密碼
使用root登陸,修改mysql數據庫的user表
3. 遠程登陸(危險慎用)
若是向在一個Ubuntu中使用msyql命令遠程鏈接另一臺mysql服務器的話,經過如下方式便可完成,可是此方法僅僅瞭解就行了,不要在實際生產環境中使用
修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
而後重啓msyql
service mysql restart
在另一臺Ubuntu中進行鏈接測試
若是依然連不上,可能緣由:
1) 網絡不通
經過 ping xxx.xxx.xx.xxx能夠發現網絡是否正常
2)查看數據庫是否配置了bind_address參數
本地登陸數據庫查看my.cnf文件和數據庫當前參數show variables like 'bind_address';
若是設置了bind_address=127.0.0.1 那麼只能本地登陸
3)查看數據庫是否設置了skip_networking參數
若是設置了該參數,那麼只能本地登陸mysql數據庫
4)端口指定是否正確
4. 刪除帳戶
drop user '用戶名'@'主機';
例:
drop user 'laowang'@'%';
delete from user where user='用戶名';
例:
delete from user where user='laowang';
-- 操做結束以後須要刷新權限flush privileges
3. 忘記 root 帳戶密碼怎麼辦 !!