1. 程式人生 > >MySQL數據庫管理4

MySQL數據庫管理4

權限列表 mysql測試圖形工具

修改數據庫管理員本機登錄密碼

[root@localhost ~]# mysqladmin -hlocalhost -uroot -p


password "新密碼"


恢復數據管理員本機登錄的密碼

vim /etc/my.cnf

[mysqld]

#validate_password_policy=0

#validate_password_length=6

skip-grant-tables

:wq

#systemctl restart mysqld

#mysql

mysql> update mysql.user

-> set

-> authentication_string=password("123123")

-> where

-> user="root" and host="localhost";

mysql> flush privileges;

mysql>quit

vim /etc/my.cnf

[mysqld]

validate_password_policy=0

validate_password_length=6

#skip-grant-tables

:wq

#systemctl restart mysqld

#mysql -uroot -p123123

mysql>

+++++++++++++++++++++++++

用戶授權

*默認只允許數據庫管理員從本機登錄。

*默認只有數據庫管理員在本機登錄才有授權權限。


給誰授權: 管理者(運維工作人員) 使用者(網站服務器)


授權命令

mysql> grant 權限列表 on 數據庫名 to 用戶名;


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


址" identified by "密碼" with grant option;


權限列表

all 所有權限

select,insert,update(name,age)


數據庫名的表示方式:

*.* 所有庫所有表

庫名.* 某個庫

庫名.表 某張表


用戶名:授權時自定義的


客戶地址表示方式

% 所有主機

192.168.4.% 網段

192.168.4.7 ip地址

主機名 pc101.tedu.cn

域名 %.tedu.cn


identified by "密碼" 登錄密碼 (可選項)

with grant option 有授權權限 (可選項)



添加yaya用戶可以在本機登錄,對所有庫表有完全權限但不能授


權,登錄密碼654321

mysql> grant all on *.* to yaya@"localhost"

-> identified by "654321";


mysql> select user(); 顯示當前登錄的用戶和客戶端地址

mysql> show grants; 顯示當前登錄用戶的訪問權限


添加plj用戶可以在x.x.x.254登錄,對所有庫表有完全權限並有


授權權限,登錄密碼654321

mysql> grant all on *.* to plj@"192.168.4.254"


identified by "654321" with grant option;



MySQL [(none)]> grant all on bbsdb.* to student


identified by "654321";



授權user1用戶可以在網絡中的任意主機連接數據庫服務器,連


接後僅對userdb庫下user表有查詢 插入 更新權限 更新時只能


更新name字段的值,登錄密碼 123456;


grant select ,insert ,update(name) on userdb.user to


user1@"%" identified by "123456";


授權信息儲存在mysql庫下的表裏

user 存儲已有的授權用戶

db 記錄授權用戶對庫訪問權限

tables_priv 記錄授權用戶對表訪問權限

columns_priv 記錄授權用戶對表中字段的訪問權限



查看一樣的授權用戶和登錄客戶端地址

select user,host from mysql.user;



管理用戶查看授權用戶的訪問權限

mysql> show grants for 用戶名@"客戶端地址";


權限撤銷

mysql> revoke 權限列表 on 庫名 from 用戶名@"客戶


端地址";



撤銷plj用戶在x.x.x.254登錄的授權權限

revoke grant option on *.* from


plj@"192.168.4.254";


撤銷plj用戶在x.x.x.254登錄後刪除表記錄的權限

revoke delete on *.* from plj@"192.168.4.254";


撤銷plj用戶在x.x.x.254登錄後所有的權限

revoke all on *.* from plj@"192.168.4.254";


刪除授權用戶

mysql> delete from mysql.user where user="plj" and


host="192.168.4.254"; flush privileges;



mysql> drop user plj@"192.168.4.254";

授權用戶修自己的登錄密碼

SET PASSWORD=PASSWORD('新密碼');


數據庫管理重置授權用戶的登錄密碼

SET PASSWORD for 用戶@"客戶端地址"=PASSWORD('


新密碼');


練習

1 刪除以上所有的授權用戶。

2 允許254 主機可以使用數據庫管理員連接數據庫服務器,並擁


有管理員的權限。

grant all on *.* to root@"192.168.4.254" identified


by "123123" with grant option;



3 不允許數據庫管理員在數據庫服務器本機登錄。

delete from mysql.user where

-> user="root" and host="localhost"; flush privileges;


4 授權webadmin用戶對webdb有完全權限,並有授權權限,


在網絡中所有主機都可以連接數據庫服務登錄密碼123456

grant all on webdb.* to webadmin@"%"

-> identified by "123456" with grant option;


grant insert on mysql.* to webadmin@"%";


5 測試以上授權


6 刪除以上授權並只允許數據庫管理員從服務器本機登錄。

grant all on *.* to root@"localhost" identified by


"123123" with grant option;


delete from mysql.user where

-> host!="localhost";

mysql> flush privileges;


+++++++++++++++++++++++++++++++++

安裝mysql服務圖形管理工具 phpmyadmin

137 rpm -q httpd php

138 rpm -q php-mysql

139 yum -y install httpd php php-mysql

140 rpm -q httpd php php-mysql

141 systemctl start httpd

142 systemctl status httpd

143 systemctl enable httpd

144 systemctl is-enabled httpd

145 echo 123 > /var/www/html/test.html

147 yum -y install elinks

148 elinks --dump http://localhost/test.html

149 vim /var/www/html/test.php

<?php

echo "hello boy";

?>

:wq


150 elinks --dump http://localhost/test.php


154 tar -zxvf phpMyAdmin-2.11.11-all-


languages.tar.gz


167 mv phpMyAdmin-2.11.11-all-languages


/var/www/html/phpmyadmin

168 cd /var/www/html/

171 chown -R apache:apache phpmyadmin/

172 cd phpmyadmin/


174 cp config.sample.inc.php config.inc.php

# vim config.inc.php

17 $cfg['blowfish_secret'] = 'plj123';

31 $cfg['Servers'][$i]['host'] = 'localhost';

:wq


mysql -uroot -p123123

mysql> create database gamedb;

mysql> grant all on gamedb.* to


gameuser@"localhost" identified by "123456";



mysql -hlocalhost -uroot -p123123

firefox http://192.168.4.12/phpmyadmin

gameuser

123456

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

數據備份與恢復

1 為什麽對數據做備份?使用備份文件恢復數據。

2 數據備份方式?

物理備份:拷貝庫或表對應的系統文件

193 tar -zcvf /opt/mysql.tar.gz


/var/lib/mysql/mysql/*


180 cp -r /var/lib/mysql/mysql /opt/mysql.bak

181 ls /opt/

182 ls /opt/mysql.bak/

183 rm -rf /var/lib/mysql/mysql

184 systemctl status mysqld

185 quit

186 cp -r /opt/mysql.bak/ /var/lib/mysql/mysql

187 cd /var/lib/mysql

188 ll

189 chown -R mysql:mysql /var/lib/mysql/mysql

190 systemctl restart mysqld

191 mysql -uroot -p123123


邏輯備份:執行備份時,根據已有的庫、表、記錄,生成對應的


sql 命令,把SQL保持到指定的文件裏。



3 數據備份策略

完全備份:備份所有數據

一臺數據庫服務器的所有數據

一個庫的所有數據

一張表的所有數據


差異備份:備份自完全備份後,所有新產生的數據

增量備份:備份自上次備份後,所有新產生的數據

完全

差異

增量


單獨使用完全備份

完全備份+差異備份

完全備份+增量備份


方式 策略

完全備份+差異備份

周期 時間 regtab 備份文件名

1 完全 18 10 1.sql 10

2 差異 18 2 2.sql 2

3 18 5 3.sql 7

4 18 3 4.sql 10

5 4 5.sql 14

6 7 6.sql 21

7 差異 1 7.sql 22


方式 策略

完全備份+差異備份

周期 時間 regtab 備份文件名

1 完全 18 10 1.sql 10

2 增量 18 2 2.sql 2

3 18 5 3.sql 5

4 18 3 4.sql 3

5 4 5.sql 4

6 7 6.sql 7

7 增量 1 7.sql 1


完全備份

周期 時間 regtab 備份文件名

1 完全 18 10 1.sql 10

2

delete from t1;

2 18 2 2.sql 2

3 18 5 3.sql 5

4 18 3 4.sql 3

5 4 5.sql 4

6 7 6.sql 7

7 完全 1 7.sql 1


生產環境中 使用

周期性計劃任務 備份腳本

30 18 * * 1 /shell/allbak.sh



++++++++++++++++++++++++++++++++

完全備份數據

mysqldump -hlocalhost -uroot -p123123 數據庫名 >


目錄名/名.sql



數據庫名的表示方式:

--all-databases 一臺數據庫服務器的所有數據

庫名 一個庫的所有數據

庫名 表名 一張表的所有數據


-B 庫名1 庫名2 一起備份多個庫的所有數據


#mysqldump -hlocalhost -uroot -p123123 userdb t2 >


/opt/t2.sql




完全數據恢復

mysql -uroot -p123123 數據庫名 < 備份文件


#mysql -uroot -p123123 userdb < /opt/t2.sql



編寫腳本allbakt2.sh 功能:

把服務器上userdb庫t2表的所有記錄備份到本機/mybak文件夾裏。使用系統日期做備份文件名例如 2017-05-25-t2.sql


#! /bin/bash

day=$(date +%F)

if [ ! –e /mydbbak ] ; then

mkdir /mydbbak

fi

mysqldump -uroot -pabc123 userdb > /mydbbak/$day-userdb.sql


MySQL數據庫管理4