數據庫管理員密碼的設置
表記錄的格式:
一、數據庫管理員密碼的設置
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” //輸入正確的舊密碼,新密碼設置才能成功
[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庫沒有寫的權限
3、mysql庫下的表
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:將鏈設置爲政策 ACCEPT:filter [確定]
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數據庫裏表配置的時候,只有打這條命令才能立刻生效】