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


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