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;