MySQL數據庫管理4
[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