CentOS7 RPM安裝Mysql 及授權(quán)與備份

CentOS7 RPM安裝Mysql :

查看linux操作系統(tǒng)及內(nèi)核版本
[root@itdev9901 ~]# cat /etc/redhat-release # 查看操作系統(tǒng)版本
CentOS Linux release 7.9.2009 (Core) 
[root@itdev9901 ~]# uname -r # 查看系統(tǒng)內(nèi)核版本
3.10.0-1160.31.1.el7.x86_64
[root@itdev9901 ~]#
下載安裝包
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
選擇 RPM Bundle,下載完記得解壓  tar -xvf xxx.tar
# 創(chuàng)建目錄并解壓
mkdir -p /opt/mysql
tar -xvf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar -C /opt/mysql
卸載舊版本的MySql (沒(méi)有的話(huà),則跳過(guò)此步驟)
查看舊版本MySql
rpm -qa | grep mysql
逐個(gè)刪除掉舊的組件
使用命令rpm -e --nodeps {-file-name}進(jìn)行移除操作,移除的時(shí)候可能會(huì)有依賴(lài),要注意一定的順序。
[root@iep-02 mysql]# rpm -qa|grep mariadb
[root@iep-02 mysql]# yum remove mariadb-libs
使用 rpm 命令安裝MySql組件

使用命令rpm -ivh {-file-name}進(jìn)行安裝操作
按照依賴(lài)關(guān)系依次安裝rpm包 依賴(lài)關(guān)系依次為common→libs→client→server
cd /opt/mysql

# 依次執(zhí)行
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm

注:ivh中, i-install安裝;v-verbose進(jìn)度條;h-hash哈希校驗(yàn)

部分機(jī)器出現(xiàn)錯(cuò)誤
[root@iep-02 mysql]# rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.30-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
錯(cuò)誤:依賴(lài)檢測(cè)失敗:
        mysql-community-common(x86-64) >= 5.7.9 被 mysql-community-libs-5.7.30-1.el7.x86_64 需要
        mariadb-libs 被 mysql-community-libs-5.7.30-1.el7.x86_64 取代
[root@iep-02 mysql]#
解決:清除yum里所有mysql依賴(lài)包
[root@iep-02 mysql]# rpm -qa|grep mysql
[root@iep-02 mysql]# yum remove mysql-libs
或者:
[root@iep-02 mysql]# rpm -qa|grep mariadb
[root@iep-02 mysql]# yum remove mariadb-libs
再次安裝成功
[root@iep-02 mysql]# rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-common-5.7.30-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準(zhǔn)備中...                          ################################# [100%]
正在升級(jí)/安裝...
   1:mysql-community-common-5.7.30-1.e################################# [100%]
[root@iep-02 mysql]# rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.30-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準(zhǔn)備中...                          ################################# [100%]
正在升級(jí)/安裝...
   1:mysql-community-libs-5.7.30-1.el7################################# [100%]
[root@iep-02 mysql]#

[root@iep-02 mysql]# rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-client-5.7.30-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準(zhǔn)備中...                          ################################# [100%]
正在升級(jí)/安裝...
   1:mysql-community-client-5.7.30-1.e################################# [100%]
[root@iep-02 mysql]#

注意細(xì)節(jié):
1> 執(zhí)行 yum remove mysql-libs 命令后,會(huì)自動(dòng)刪除掉 /etc/ 下的 my.cnf 文件
2> 對(duì)于安裝mysql組件,只有安裝了 mysql-community-server-5.7.22-1.el7.x86_64.rpm 組件,才會(huì):

a). 在 /etc/下生成 my.cnf 文件 和 my.cnf.d 文件夾

b). 在/var/lib/下生產(chǎn)以下三個(gè)文件夾

c). 在/var/log/ 下生成 mysqld.log 文件

d). 在/var/run/ 下生成 mysqld 目錄
查看安裝路徑
rpm -qal |grep mysql
[root@itdev9903 run]# rpm -qal |grep mysql
/usr/bin/mysql
/usr/bin/mysql_config_editor
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlpump
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/doc/mysql-community-client-5.7.30
/usr/share/doc/mysql-community-client-5.7.30/LICENSE
/usr/share/doc/mysql-community-client-5.7.30/README
...

登錄并創(chuàng)建MySql密碼
1 啟動(dòng)MySql
安裝完后,使用命令 service mysqld start 或 systemctl start mysqld.service 啟動(dòng)MySQL服務(wù)。(如果mysql服務(wù)無(wú)法啟動(dòng),就重啟一下系統(tǒng))

systemctl start mysqld.service    啟動(dòng)mysql
systemctl status mysqld.service  查看mysql狀態(tài)
systemctl stop mysqld.service   關(guān)閉mysql

查看mysql進(jìn)程 ps -ef|grep mysql
查看3306端口 netstat -anop|grep 3306

查看狀態(tài)

[root@iep-02 mysql]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
[root@iep-02 mysql]#

啟動(dòng)再查看狀態(tài)
[root@iep-02 mysql]# systemctl start mysqld.service
[root@iep-02 mysql]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2021-07-08 15:57:16 CST; 4s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 4785 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 4723 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 4789 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─4789 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

7月 08 15:57:12 iep-02 systemd[1]: Starting MySQL Server...
7月 08 15:57:16 iep-02 systemd[1]: Started MySQL Server.
[root@iep-02 mysql]#
查看是否安裝成功
[root@iep-02 mysql]# ps -ef|grep mysql
mysql     4789     1  0 15:57 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root      4852  2069  0 15:57 pts/2    00:00:00 grep --color=auto mysql
[root@iep-02 mysql]# lsof -i
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chronyd  656 chrony    5u  IPv4  15657      0t0  UDP localhost:323
chronyd  656 chrony    6u  IPv6  15658      0t0  UDP localhost:323
sshd     915   root    3u  IPv4  16174      0t0  TCP *:ssh (LISTEN)
sshd     915   root    4u  IPv6  16176      0t0  TCP *:ssh (LISTEN)
sshd    1550   root    3u  IPv4  24430      0t0  TCP iep-02:ssh->172.18.5.116:49304 (ESTABLISHED)
sshd    1993   root    3u  IPv4  51377      0t0  TCP iep-02:ssh->172.18.5.116:62915 (ESTABLISHED)
sshd    2062   root    3u  IPv4  51494      0t0  TCP iep-02:ssh->172.18.5.116:51224 (ESTABLISHED)
mysqld  4789  mysql   21u  IPv6  55133      0t0  TCP *:mysql (LISTEN)
[root@iep-02 mysql]# netstat -anop|grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      4789/mysqld          off (0.00/0/0)
[root@iep-02 mysql]#

因?yàn)榉?wù)已經(jīng)啟動(dòng)了,因此能夠用root和這個(gè)密碼登錄了:
mysql -u root -p
password 輸入本身得到的密碼

提示需要
[root@iep-02 mysql]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@iep-02 mysql]#

登陸mysql修改root密碼
由于MySQL5.7.4之前的版本中默認(rèn)是沒(méi)有密碼的,登錄后直接回車(chē)就可以進(jìn)入數(shù)據(jù)庫(kù),進(jìn)而進(jìn)行設(shè)置密碼等操作。其后版本對(duì)密碼等安全相關(guān)操作進(jìn)行了一些改變,在安裝過(guò)程中,會(huì)在安裝日志中生成一個(gè)臨時(shí)密碼。
怎么找到這個(gè)臨時(shí)密碼呢?

使用:
grep 'temporary password' /var/log/mysqld.log
即可查詢(xún)到類(lèi)似于如下的一條日志記錄:
[root@iep-02 mysql]# grep 'temporary password' /var/log/mysqld.log
2021-07-08T07:57:14.452490Z 1 [Note] A temporary password is generated for root@localhost: -6Pxiaa>:W_L
[root@iep-02 mysql]#

 -6Pxiaa>:W_L 即為登錄密碼。使用這個(gè)隨機(jī)密碼登錄進(jìn)去,然后修改密碼,使用命令:
 mysql -uroot -p 

root@iep-02 mysql]#  mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.30

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
操作提示需要修改密碼
mysql> status
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
簡(jiǎn)單密碼不會(huì)通過(guò)
alter user root@localhost identified by '123456';
mysql> alter user root@localhost identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql>
或者:
mysql> set password for root@localhost = password('123456');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql>
生成隨機(jī)密碼
cat /dev/urandom | LC_ALL=C tr -dc "[:alnum:]" | fold -w 10 |head -10
cat /dev/urandom | LC_ALL=C tr -dc "[:graph:]" | fold -w 10 |head -10
更改密碼
alter user root@localhost identified by 'password';

mysql> alter user root@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[root@iep-02 mysql]#
再次登錄輸入新密碼
mysql -uroot -p
mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql>
此時(shí)只能本機(jī)訪問(wèn)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

mysql>

mysql>  show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>
設(shè)置外部遠(yuǎn)程訪問(wèn)
權(quán)限:
#授予root用戶(hù)遠(yuǎn)程訪問(wèn)權(quán)限:
mysql> grant all privileges on *.* to root@'%' identified by 'password' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>

# 刷新權(quán)限,使設(shè)置生效, OK。
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

#再次查看權(quán)限:
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>

開(kāi)啟3306端口 遠(yuǎn)程訪問(wèn)

firewall-cmd --zone=public --add-port=3306/tcp --permanent  
#刷新防火墻
firewall-cmd --reload  
在遠(yuǎn)程機(jī)器上測(cè)試遠(yuǎn)程連接:  mysql -h 172.18.5.209 -uroot -p
創(chuàng)建用戶(hù)并授權(quán)

一. 創(chuàng)建用戶(hù)
命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

說(shuō)明:
username:你將創(chuàng)建的用戶(hù)名
host:指定該用戶(hù)在哪個(gè)主機(jī)上可以登陸,如果是本地用戶(hù)可用localhost,如果想讓該用戶(hù)可以從任意遠(yuǎn)程主機(jī)登陸,可以使用通配符%
password:該用戶(hù)的登陸密碼,密碼可以為空,如果為空則該用戶(hù)可以不需要密碼登陸服務(wù)器

# 例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

二. 授權(quán):
命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
說(shuō)明:
privileges:用戶(hù)的操作權(quán)限,如SELECT,INSERT,UPDATE等,如果要授予所的權(quán)限則使用ALL
databasename:數(shù)據(jù)庫(kù)名
tablename:表名,如果要授予該用戶(hù)對(duì)所有數(shù)據(jù)庫(kù)和表的相應(yīng)操作權(quán)限則可用表示,如.*

# 例子:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

注意:
用以上命令授權(quán)的用戶(hù)不能給其它用戶(hù)授權(quán),如果想讓該用戶(hù)可以授權(quán),用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

細(xì)分授權(quán)

mysql中可以給一個(gè)用戶(hù)授予如select,insert,update,delete等其中的一個(gè)或者多個(gè)權(quán)限,主要使用grant命令,用法格式為:
grant 權(quán)限 on 數(shù)據(jù)庫(kù)對(duì)象 to 用戶(hù)

一、grant 普通數(shù)據(jù)用戶(hù),查詢(xún)、插入、更新、刪除 數(shù)據(jù)庫(kù)中所有表數(shù)據(jù)的權(quán)利。 
grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%' 
grant update on testdb.* to common_user@'%' 
grant delete on testdb.* to common_user@'%' 
或者,用一條 MySQL 命令來(lái)替代: 
grant select, insert, update, delete on testdb.* to common_user@'%'

二.設(shè)置與更改用戶(hù)密碼

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是當(dāng)前登陸用戶(hù)用:
SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

三. 撤銷(xiāo)用戶(hù)權(quán)限
命令:REVOKE privilege ON databasename.tablename FROM 'username'@'host';
說(shuō)明:
privilege, databasename, tablename:同授權(quán)部分

例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在給用戶(hù)'pig'@'%'授權(quán)的時(shí)候是這樣的(或類(lèi)似的):GRANT SELECT ON test.user TO 'pig'@'%',則在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤銷(xiāo)該用戶(hù)對(duì)test數(shù)據(jù)庫(kù)中user表的SELECT 操作。相反,如果授權(quán)使用的是GRANT SELECT ON *.* TO 'pig'@'%';則REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤銷(xiāo)該用戶(hù)對(duì)test數(shù)據(jù)庫(kù)中user表的Select權(quán)限。

具體信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。

四.刪除用戶(hù)
命令:DROP USER 'username'@'host';
mysql命令導(dǎo)入導(dǎo)出sql文件

window下

1.導(dǎo)出整個(gè)數(shù)據(jù)庫(kù),首先打開(kāi)要導(dǎo)出的目錄

mysqldump -u 用戶(hù)名 -p 數(shù)據(jù)庫(kù)名 > 導(dǎo)出的文件名

mysqldump -u dbuser -p dbname > dbname.sql 下一行需要輸入密碼

mysqldump -uroot -ppasswd [dbname]> english.sql 在本行直接輸入密碼

2.導(dǎo)出一個(gè)表

mysqldump -u 用戶(hù)名 -p 數(shù)據(jù)庫(kù)名 表名> 導(dǎo)出的文件名

mysqldump -u dbuser -p dbname users> dbname_users.sql

3.導(dǎo)出一個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)

mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql

-d 沒(méi)有數(shù)據(jù) --add-drop-table 在每個(gè)create語(yǔ)句之前增加一個(gè)drop table

4.導(dǎo)入數(shù)據(jù)庫(kù)

常用source 命令

進(jìn)入mysql數(shù)據(jù)庫(kù)控制臺(tái),如

mysql -u root -p

mysql>use 數(shù)據(jù)庫(kù)

然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)

mysql>source d:/dbname.sql

linux下

一、導(dǎo)出數(shù)據(jù)庫(kù)用mysqldump命令(注意mysql的安裝路徑,即此命令的路徑):

1、導(dǎo)出數(shù)據(jù)和表結(jié)構(gòu):

mysqldump -u用戶(hù)名 -p密碼 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)名.sql

\#/usr/local/mysql/bin/  mysqldump -uroot -p abc > abc.sql

敲回車(chē)后會(huì)提示輸入密碼

2、只導(dǎo)出表結(jié)構(gòu)

mysqldump -u用戶(hù)名 -p密碼 -d 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)名.sql

\#/usr/local/mysql/bin/  mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/ ---> mysql的data目錄

二、導(dǎo)入數(shù)據(jù)庫(kù)

1、首先建空數(shù)據(jù)庫(kù)

mysql>create database abc;

2、導(dǎo)入數(shù)據(jù)庫(kù)

方法一:

(1)選擇數(shù)據(jù)庫(kù)

mysql>use abc;

(2)設(shè)置數(shù)據(jù)庫(kù)編碼

mysql>set names utf8;

(3)導(dǎo)入數(shù)據(jù)(注意sql文件的路徑)

mysql>source /home/abc/abc.sql;

方法二:

mysql -u用戶(hù)名 -p密碼 數(shù)據(jù)庫(kù)名 < 數(shù)據(jù)庫(kù)名.sql

#mysql -uabc_f -p abc < abc.sql
權(quán)限列表:
  • ALTER: 修改表和索引。
  • CREATE: 創(chuàng)建數(shù)據(jù)庫(kù)和表。
  • DELETE: 刪除表中已有的記錄。
  • DROP: 拋棄(刪除)數(shù)據(jù)庫(kù)和表。
  • INDEX: 創(chuàng)建或拋棄索引。
  • INSERT: 向表中插入新行。
  • REFERENCE: 未用。
  • SELECT: 檢索表中的記錄。
  • UPDATE: 修改現(xiàn)存表記錄。
  • FILE: 讀或?qū)懛?wù)器上的文件。
  • PROCESS: 查看服務(wù)器中執(zhí)行的線(xiàn)程信息或殺死線(xiàn)程。
  • RELOAD: 重載授權(quán)表或清空日志、主機(jī)緩存或表緩存。
  • SHUTDOWN: 關(guān)閉服務(wù)器。
  • ALL: 所有權(quán)限,ALL PRIVILEGES同義詞。
  • USAGE: 特殊的 "無(wú)權(quán)限" 權(quán)限。
mysql命令行清屏

有4種方法:
system clear
sytem reset
! clear
commond+l

備份

# 建備份賬號(hào) 
grant select,lock tables on *.* to 'barkup'@'192.168.100.%' identified by 'pwd@123';
 
# 不帶庫(kù)
mysqldump -u dbuser -p'passwd' --single-transaction --default-character-set=utf8 dbname > dbname_$(date '+%Y%m%d_%H%M%S').sql

# 帶庫(kù)
mysqldump -u dbuser -p'passwd' --single-transaction --default-character-set=utf8 -B dbname > dbname_$(date '+%Y%m%d_%H%M%S').sql

# 導(dǎo)入
mysql -uroot -p'password'  db_dbtest < db_20210804_152823.sql

# mysqldump工具備份
# 備份整個(gè)數(shù)據(jù)庫(kù)
mysqldump -u root -h host -p dbname > backdb.sql
#備份數(shù)據(jù)庫(kù)中的某個(gè)表
mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql
# 備份多個(gè)數(shù)據(jù)庫(kù)
mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql
#備份系統(tǒng)中所有數(shù)據(jù)庫(kù)
mysqldump -u root -h host -p --all-databases > backdb.sql
# 樣例
mysqldump -uroot -p'password' --single-transaction --default-character-set=utf8 --all-databases > dbackdb_$(date '+%Y%m%d_%H%M%S').sql
  • shell備份

    #!/bin/bash
    <!--定義數(shù)據(jù)庫(kù)連接、目標(biāo)信息庫(kù)等信息:-->
    user="repl"      <!--授權(quán)的賬戶(hù)-->
    pass="passwd"       <!--授權(quán)賬戶(hù)的密碼-->
    host="172.18.5.209"    <!--目標(biāo)服務(wù)器IP地址-->
    conn="-u $user -p$pass -h $host"
    data1="db1"             <!--備份的數(shù)據(jù)庫(kù)名字-->
    data2="db2"    <!--備份的數(shù)據(jù)庫(kù)名字-->
    bak="/opt/backup"          <!--指定備份目錄-->
    cmd="/usr/bin/mysqldump"      <!--指定命令工具-->
    time=`date +%Y-%m-%d-%H-%M`      <!--定義時(shí)間變量-->
    name_1="$data1-$time"        <!--定義備份后的名字-->
    name_2="$data2-$time"        <!--定義備份后的名字-->
    cd $bak           <!--切換至備份目錄下-->
    $cmd $conn --databases $data1 > $name_1.sql      <!--備份為.sql文件-->
    $cmd $conn --databases $data2 > $name_2.sql      <!--備份為.sql文件-->
    /bin/tar zcf $name_1.tar.gz $name_1.sql --remove > /dev/null    <!--打包后刪除源文件-->
    /bin/tar zcf $name_2.tar.gz $name_2.sql --remove > /dev/null    <!--打包后刪除源文件-->
    
  • 安全備份

# 隨機(jī)密碼
cat /dev/urandom | LC_ALL=C tr -dc "[:graph:]" | fold -w 10 |head -10
# 建備份賬號(hào) 
grant select,reload,REPLICATION CLIENT, REPLICATION SLAVE,lock tables on *.* to 'barkup'@'10.%.%.%' identified by 'p0B4`^1ukW';
grant all privileges on *.* to 'barkup'@'localhost' identified by 'p0B4`^1ukW';

# 刷新權(quán)限
FLUSH PRIVILEGES;

# 安全登錄解決的方法。
# mysql_config_editor的--login-path可以完成該工作。
# mysql_config_editor命令使用:
mysql_config_editor set --login-path=mydbbarkup --host=localhost --port=3306 --user=barkup --password
# 完成配置后,生成一個(gè)mydb的登錄點(diǎn)(login-path),密鑰保存在$HOME/.mylogin.cnf。以后訪問(wèn)數(shù)據(jù)庫(kù)只要指定login-path的名稱(chēng)即可
mysql --login-path=mydbbarkup

# 全量備份
# --single-transaction: 基于此選項(xiàng)能實(shí)現(xiàn)熱備InnoDB表;因此,不需要同時(shí)使用--lock-all-tables;
# --master-data=2  記錄備份那一時(shí)刻的二進(jìn)制日志的位置,并且注釋掉,1是不注釋的
# --databases hellodb 指定備份的數(shù)據(jù)庫(kù)
backup_dir="/data/backup/mysql"
database="test"
filename="${backup_dir}/${database}_`date +%Y-%m-%d-%H%M`.sql"
mysqldump --login-path=mydbbarkup --single-transaction --master-data=2 --default-character-set=utf8 --set-gtid-purged=OFF --triggers --routines --events --dump-date --databases $database > $filename

#!/bin/bash

# 全庫(kù)備份
# sh all_barkup.sh db_name
# 默認(rèn)為sywn
# 第一個(gè)參數(shù):db_name

# 登錄密鑰
login_path="mydbbarkup"
# 備份路徑
# 提前準(zhǔn)備目錄
backup_dir="/data/backup/mysql"
backup_dir="/root/test"

# 備份命
cmd="/usr/bin/mysqldump"  
# 當(dāng)前時(shí)間
time=`date +%Y-%m-%d-%H-%M` 

bark_all()
{
    # 需備份庫(kù)名
    db_name=$1
    database=${db_name:-'sywn'}

    # 保存文件名
    filename="${backup_dir}/${database}_$time.sql"

    # 執(zhí)行備份
    $cmd --login-path=${login_path} \
    --single-transaction \
    --master-data=2 \
    --default-character-set=utf8 \
    --set-gtid-purged=OFF \
    --triggers --routines --events \
    --dump-date \
    --databases $database > $filename
}

# 執(zhí)行
CALL_DO() {
    while [ $# -ne 0 ]
    do
        # 打印特殊變量$1的值,及特殊變量$#的值
        echo "Current Parameter: $1, Remaining $#."
        bark_all $1                     
        # 將位置參數(shù)左移一位
        shift
        done
}

# 執(zhí)行
CALL_DO $*
  • 清屏

    system clear
    
  • 查看權(quán)限

    # 權(quán)限列表 
    SHOW PRIVILEGES;
    # 單用戶(hù)權(quán)限
    show grants for dbdev@'%';
    
  • 日志

    # general_log會(huì)記錄所有的SQL操作,一般不建議開(kāi)啟。
    show global variables like '%general%';
    tail -f  /var/lib/mysql/itdev9903.log | grep "Connect"
    
    # 開(kāi)啟general_log
    set global general_log=on;
    
  • 授權(quán)

    grant all privileges on *.* to root@'172.18.5.127' identified by 'password' WITH GRANT OPTION;
    
  • 回收權(quán)限

    # 回收所有
    revoke all privileges,grant option from 'xxx'@'%';
    # 回收
    REVOKE SELECT ON *.* FROM 'xxx'@'%';
    
  • 常用操作

    create database if not exists db default charset utf8 collate utf8_general_ci;
    CREATE USER 'dbdev'@'%' IDENTIFIED BY 'NGRDNag(f8E';
    grant insert,delete,update,select,create,drop,alter,index,lock tables on db.* to 'dbdev'@'%' ;
    FLUSH PRIVILEGES;
    DROP USER 'dbdev'@'%';
    
  • 查看用戶(hù)權(quán)限

    show grants for root@'%';
    
  • 刪除用戶(hù)

    Delete FROM user Where User='root' and Host='172.18.5.127';
    
  • 刷新

    flush privileges;
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容