MySQL資料庫管理4

技術小胖子發表於2017-11-08

修改資料庫管理員本機登入密碼

[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





     本文轉自hj_1314wgn 51CTO部落格,原文連結:http://blog.51cto.com/13513556/2052950,如需轉載請自行聯絡原作者




相關文章