一.如何登陸mysql:
1.下載安裝mysql數據庫:( 我們以5.5版本爲例進行學習)
注意:
(1)下載安裝時文件路徑中不要有中文,不然路徑不能解析,安裝會失敗。
(2)一般的數據庫軟件中有很多插件,選擇性的安裝,一般只需要client,server,database
(3)在安裝數據庫的過程中會創建root用戶及可以備選的用戶,及密碼。
2.登陸mysql:
(1)第一種方式(一般本地連接):通過client登陸,默認使用的是root用戶,直接輸入密碼就可以登陸。如下圖所示:
(2)第二種方式(本地或者遠程連接):
以windows爲例:在dos窗口中cd到mysql安裝目錄下的bin目錄,然後輸入一下命令
>mysql -hlocalhost -uroot -p123456 -h後面的參數是請求連接的機器地址(一般本地連接時省略),-u後面接的是用戶名,-p後面接的是密碼
二.mysql數據庫用戶創建及權限管理:
1.創建用戶並賦權限:
(1)第一種方式:grant命令
mysql>grant all privileges on *.* to username@hostname identified by 'password';
mysql>flush privileges; //權限修改之後一定要記得刷新系統權限表才能生效
格式:grant 權限 on 數據庫.表 to 用戶名@登錄主機 identified by "密碼";
通過grant命令可以創建用戶同時分配權限,也可以給已有的用戶賦權限,而且權限可以重複附加(第一次給查的權限,第二次給刪的權限)
hostname如果用“%”表示所有的機器都可以連接此數據庫。
(2)第二種方式:create user命令:
mysql>create user ‘jwang13’@'localhost' identified by 'jwang13';
mysql>flush privileges;
注:通過這種方式創建用戶之後可以通過grant命令進行權限賦值。在創建用戶時identified by password爲可選項,不設置默認不用密碼
(3)第三種方式:直接往user表中插入一條記錄
mysql>insert into user (user,host,password,.......) values('jwang12','localhost',password('jwang12'),.......);
mysql>flush privileges;
然後通過grant命令給用戶賦權限,這種方式一般很少用。
說明:user表中不同的數據庫版本中字段的名字不太一致,比如password字段在高版本的user表中就沒有,並且在插入時很多字段是默認不能爲空的,所以在創建用戶並賦權限的時候多采用第一種方式。
2.查看用戶及主機:
mysql庫中有一張user表,記錄了用戶的名稱,主機,密碼等信息
mysql>select user,host,password from user;
3.修改用戶的密碼:
(1)第一種方式:修改用戶密碼實際上就是根據主機和用戶名來更改user表中的密碼,如下圖所示:
mysql>update mysql.user set password='jwang13' where user='jwang' and host='localhost';
mysql>flush privileges;
(2)第二種方式:在登陸時通過mysqladmin命令修改密碼;
cd到mysql的安裝bin目錄,然後執行:
mysqladmin -u username -p password newpassword
Enter Password:******* 輸入舊密碼回車即可
mysql -u username -p
Enter Password:******* 輸入新密碼回車即可進入數據庫環境
4.刪除用戶信息:
(1)刪除用戶:這種方式只是刪除了user表中的記錄
mysql>Delete FROM user Where User='jwang' and Host='localhost';
mysql>flush privileges;
(2)刪除賬戶及權限:這種方式清除了有關該用戶的所有信息,包括權限信息
mysql>drop user 用戶名@'%';
mysql>drop user 用戶名@ localhost;
注意:如果只是刪除了user表中的記錄的話權限信息依然存在,如果重新添加一個用戶和原先刪除的用戶一樣的話,那他默認會擁有原先同名用戶的權限信息。
5.mysql權限驗證過程:
常識1:在mysql數據庫中,有mysql_install_db腳本初始化權限表,存儲權限的表有:
user,db,host,table_priv,columns_priv,proc_priv
常識2:MySQL存取控制包含2個階段:
階段1:服務器檢查你是否允許連接。
階段2:假定你能連接,服務器檢查你發出的每個請求。看你是否有足夠的權限實施某個具體的請求(如select)。
常識3:user表中有很多字段,大致分爲3類:
(1)用戶列:host,user,password(有的版本的user表中沒有這個字段)
(2)權限控制列:select_priv,insert_priv等以priv結尾的字段
(3)安全控制列:ssl_type,ssl_cipher,x509_issuer,x509_subject(ssl用於加密,x509可以用來標識用戶)
(4)資源控制列:max_questions:每小時可以允許有多少次查詢
max_updates:每小時可以允許執行多少次更新
max_connections:每小時可以建立多少次鏈接
max_user_connects:單個用戶可以同時具有的連接數。
注意:有的版本中沒有password,而是多了幾個與密碼相關的字段。在使用insert into user方法新建用戶時,user表中部分字段不能爲空,要設置默認值。