數據庫管理員密碼的設置


數據庫管理員密碼的設置

 

表記錄的格式:

 

 

一、數據庫管理員密碼的設置

     1、設置數據庫管理員的初始密碼

        默認情況下,數據庫管理員在本機登陸時不需要密碼

        [root@server1 ~]# mysqladmin  –hlocalhost -uroot  password  “xxxxx”         

        [root@server1~]# mysql  -hlocalhost  -uroot -pxxxxx                        

        注:密碼用雙引號括起來password加密,密文保存在mysql數據庫的user表裏

     2、重置數據庫管理員的密碼

                         [root@server1~]#mysqladmin  –h數據庫IP/主機名  -u數據庫管理員名  –p password  “xxx”  //輸入正確的舊密碼,新密碼設置才能成功                  

     3恢復數據庫管理員密碼

       1)修改主配置文件/etc/my.cnf

       [mysqld]                                                                

skip-grant-table=1  // 登錄時跳過授權庫                                   

         2)登錄後修改密碼

mysql>updatemysql.user set password=password(‘123’) where user=’root’ and host=’localhost’                                                          

      3)手動修改授權庫下的表後執行flushprivileges;命令使之生效

二、用戶授權和權限撤銷

1、默認情況下只有數據庫管理員從本機登錄時纔有權限授權

    Select user();  查看當前登錄用戶

    Show grants for 用戶名@“客戶端地址”;//管理員root查看授權用戶的授權信息

    Desc mysql.user   

mysql> show grants;  //登陸賬號查看自己的權限                            

mysql>grant  權限列表  on  數據庫名 to  用戶名@”客戶端地址”  identified  by  “密碼”  with  grant  option   //授權命令                             

mysql>select user,host,password frommysql.user;  //查看當前服務器上的授權用戶

mysql>show grants for root@”192.168.10.2”  //查看用戶的權限

 

權限列表表示:授權用戶登錄後,在數據庫服務器上可以執行的操作

all—所有權限、select,delete,update 指定有某種權限

select,update(name,sex,age)  指定有某種權限

              

數據庫名錶示方式:授權用戶登陸後,可以操作的庫

 *.*               服務器上的所有庫所有表

                   數據庫名.表名     某個庫下的某個表

                   數據庫名.*        某個庫裏的所有表

                   數據庫不一定事先存在

用戶名錶示方式:管理員授權時自定義的用戶名(mysql.user,要有標識性,與系統賬號(/etc/passwd)無關,用戶受完權後信息保存到mysql.user 表裏,是連接數據庫服務器時使用的名字

客戶端地址表示默認所有客戶端地址

%(所有主機)、某個IP地址、某個網段(192.168.10.%)、主機名(數據庫服務器能夠解析主機名)、區域(%.tarena.com)

identified by ‘密碼:設置授權用戶連接服務器時使用的密碼,是可選項,若不寫此選項,用戶登錄時不需要密碼

with grant option :授權用戶是否有授權權限,是可選項,若不寫,用戶沒有授權權限

 

練習:授權數據庫管理員root賬號可以從地址是192.168.10.2主機連接數據庫服務器192.168.10.254,連接密碼是666,對所有庫所有表有完全權限,且有授權的權限;允許webuser賬戶從網絡中的所有主機訪問數據庫服務器,只對數據庫服務器上的webdb有完全權限,密碼888

mysql>setpassword=password('新密碼');  //授權用戶登陸後修改自己的密碼                                   

mysql>set password for 用戶@'客戶端地址'=password('新密碼'); //管理員重置授權用戶的密碼                                                            

mysql>grant all on webdb.*to root@'192.168.10.1' identified by 'tarena' with grant option;//不能授權,因爲授權信息要寫到mysql庫中,而root@'192.168.10.1'mysql庫沒有寫的權限

3mysql庫下的表

   user:對用戶的授權信息--

   db:庫的權限信息

   tables_priv:表的權限信息

   columns_priv:字段的權限信息

4權限撤銷 默認只有數據庫管理員從數據庫本機登錄有撤銷權限的權限。)

revoke 權限列表 on 數據庫名.表名from 用戶名@’客戶端地址’;  

revoke insert,delete  on *.*  from  root@”192.168.1.100”;     

revoke grant option on數據庫名.表名from 用戶名@’客戶端地址’;   //撤銷用戶的授權權限

釋例:

grant  all on  *.*  to  root@"192.168.1.100" identified by "888" with grant  option ;    //授權root用戶從192.168.1.100登錄時,對所有數據庫具有所有權限,並且具有授權權限。

revoke  權限列表  on  數據庫名   from  用戶名@"客戶端地址"

 

revoke  insert,delete on  *.*  from root@"192.168.1.100";

 

   revoke all  on  mysql.* from  root@"192.168.1.100";//這個命令不會成功執行,雖然上面命令給這IP地址授予對所有數據庫具有完全權限,但沒有具體對mysql庫授權,故這個命令不成立。

revoke  all  on  *.*  from root@"192.168.1.100";

*對目標對象有過授權才能撤銷授權。

 

 

mysql>flush privileges;

注:只有對目標對象做過授權才能取消權限

5刪除授權用戶

   delete from mysql.user whereuser=’xxx’;

注:mysql.user 保存用戶的授權信息

   

授權對mysql 有完全權限且有授權權限時,用戶對其他庫無授權權限

 

 

注意:

    不允許數據庫管理員從數據庫本機登錄

    授權可以使用數據庫管理員從自己工作的PC登錄服務器 *.* all with grant option

給網站開發任意開發授權用戶

1.設置數據庫服務器管理員密碼

數據庫管理員默認名叫root

 

1.忘記數據庫管理員密碼怎麼辦?

[root@localhost ~]#service mysql stop  //先停止mysql服務

 

[root@localhost ~]#service mysql start--skip-grant-table  //啓動mysql服務,用--skip-grant-table實現在啓動服務時“跳過mysql授權庫裏的user用戶賬戶信息表

 

[root@localhost ~]mysql   //輸入mysql然後回車進入

 

mysql>desc mysql.user;   //查看mysql.user表結構

 

mysql>select user,host,password from mysql.user;   //因爲mysql.user目前就一個用戶root, 所以搜索'user用戶'"host主機名""password密碼" 查看一下

 

mysql>update mysql.user setpassword=password("123") where user=”root” and host=”localhost”; //配置密碼   update更新一下user表裏的字段password的數據,更新的密碼123

mysql >flush privileges;  //刷新

mysql>exit  //退出

 

[root@localhost ~]#service mysql restart    //重啓服務

 

[root@localhost ~]mysql -root -p123    //用新密碼進入

 

 

2.重置管理員密碼  

需要有MySQL-client-5.6.15-1.el6.x86_64.rpm這個包,mysqladmin這個命令才能用

 

[root@localhost ~]# mysqladmin -uroot -p password  "123456"   //設置新密碼爲“123456

Enter password:     //輸入舊密碼回車,舊密碼正確新密碼才能設置成功

[root@localhost ~]# 

[root@localhost ~]# mysql -uroot -p123456   //用新密碼進入  


數據庫授權的前期環境配置

 

1.用兩臺linux6.4做實驗,確保互相能ping

2.臨時關閉selinux

3.永久關閉selinux  【進vim /etc/sysconfig/selinux  配置配置SELINUX=disabled

 

步驟操作:

ping  數據庫服務器ip地址

 

[root@localhost~]# service iptables stop   //停用防火牆

iptables:清除防火牆規則:                                 [確定]

iptables:將鏈設置爲政策 ACCEPTfilter                    [確定]

iptables:正在卸載模塊:                                   [確定]

[root@localhost~]# chkconfig  --level 35 iptablesoff   //下次開機不啓動防火牆

[root@localhost~]# setenforce  0   //臨時關閉selinux

[root@localhost~]# vim /etc/sysconfig/selinux   //永久關閉selinux

[root@localhost~]# grep disable /etc/sysconfig/selinux

#     disabled - No SELinux policy is loaded.

SELINUX=disabled        // 配置SELINUX=disabled

[root@localhost ~]#getenforce    //查看selinux的運行級別

Permissive

 

二、mysql數據庫服務器登錄賬戶的授權和權限撤銷

 

默認情況下數據庫管理員只能從數據庫服務器本機登陸。

默認情況下數據庫管理從服務器本機登陸的時候纔有授權權限。

 

2.1用戶授權

show grants;    //登陸賬號查看自己的權限

select user,host,password  from mysql.user;   //查看當前數據庫有哪些授權用戶賬號

 

show grants  for  root@'192.168.10.20';    //查看授權用戶賬號root的權限

 

2.2授權命令的語法格式:

 

mysql> grant 權限列表  on  數據庫 to 用戶名@"客戶端地址

     >identified  by "密碼"  with grant option;

例子:

mysql> grant all on *.* to  root@"192.168.10.10"

mysql>identified  by "888" ,

mysql>with grant option;   //可選項,含義是授權給某個用戶

 

對語法格式解釋如下:

 

權限列表:(授權用戶登陸之後有什麼樣的權限)

usage   無權限【除有瀏覽權限外,無其他權限】

all      所有權限

select,delete,update(字段名1,字段名2)

      

數據庫名:(授權用戶可以操作的庫)

*.*    //服務器上的所有庫所有表

數據庫名.表名   //某個庫裏的某個表

數據庫名.*   //某數據庫裏的所有表

 

用戶名:(登陸數據庫服務器時使用的名字)

授權時自定義用戶名要有標識性  保存在mysql庫的user表裏

 

 

客戶端地址:(授權用戶可以從那臺主機連接數據庫服務器的地址,就是授權用戶的地址)

代表所有主機

1.1.1.1  代表單個ip地址

192.168.1.%  代表某個網段   192.168.1.0網段

pc1.tarena.com  主機名  (數據庫服務器要能夠解析的主機名,可以以“單個主機名”來代表“客戶端地址”)

%.tarena.com    區域    (數據庫服務器要能夠解析區域內的主機名,只要域名叫tarena.com都授權 %匹配全部)

 

 

identified by "密碼"  (設置授權用戶的密碼)

可選項  不寫時授權用戶登陸數據庫服務器沒有密碼 

 

with grant option  (授權用戶是否有授權的權限)

可選項  不寫時授權用戶沒有授權權限

 

2.3 mysql庫下的表作用:

 

mysql.user          //對用戶的授權信息

mysql.db            //用戶對庫的權限信息

mysql.tables_priv   //用戶對錶的權限信息

mysql.columns_priv  //用戶對字段的權限信息

 

 

set password=password("新密碼")   //授權用戶登錄後修改自己的密碼

set password for 用戶@“客戶端地址”=password("新密碼")//管理員重置授權用戶密碼

2.4刪除授權用戶

   delete  from mysql.user  where  user=’xxx’ and  host=”xxx”; 

 

 

撤銷授權

格式語句:

revoke 權限列表  on  數據庫名  from 用戶名@"客戶端地址";

 

mysql>flush privileges;   //重新加載mysql數據庫信息配置【只要是手動對mysql數據庫裏表配置的時候,只有打這條命令才能立刻生效】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章