MySQL8 是一款功能強(qiáng)大且開源的(遵循GPL協(xié)議)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)藏研。
本方案基于CentOS8系統(tǒng)設(shè)計,建議在RedHat/CentOS系統(tǒng)中使用袒哥。
1.MySQL8 的安裝
1、打開 MySQL8 官方網(wǎng)站下載頁面【https://dev.mysql.com/downloads/repo/yum/】艺演,下載并安裝 yum 源到用戶主目錄中。
[centos@host ~]$ sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm
注意:如果使用本地或私有yum源伤提,可忽略本步驟,直接獲取本地/私有yum源的配置文件使用即可舶沛。有關(guān)如何進(jìn)行yum源的本地化/私有化如庭,請閱讀文章《RedHat/CentOS8 【國內(nèi)/本地/私有 YUM 源】制作和使用》,文章地址【http://www.reibang.com/p/68db74388600】往毡。
2卖擅、禁用系統(tǒng)內(nèi)置 yum 源的 MySQL 安裝模塊。
CentOS8 的內(nèi)置 yum 源中已經(jīng)提供 MySQL 安裝模塊(但比官方提供的版本要舊),而在執(zhí)行安裝命令時惩阶,內(nèi)置 yum 源的優(yōu)先級高于其他 yum 源挎狸,因此要禁用內(nèi)置 yum 源的 MySQL 安裝模塊。
[centos@host ~]$ sudo dnf module disable mysql
3断楷、安裝 MySQL8 的服務(wù)器端程序锨匆。
[centos@host ~]$ sudo dnf install mysql-server mysql
注意:程序文件在"/usr/bin"目錄中,配置文件是"/etc/my.cnf"冬筒,套接字文件在"/var/lib/mysql"目錄中恐锣,運(yùn)行時文件在"/var/run/mysqld"目錄中响牛,日志文件在"/var/log"目錄中,程序運(yùn)行用戶和組是"mysql:mysql","mysql"用戶和組安裝時默認(rèn)創(chuàng)建。
2.MySQL8 的配置
1暮屡、設(shè)置數(shù)據(jù)庫實例的數(shù)據(jù)存儲目錄莺掠。
數(shù)據(jù)庫實例的默認(rèn)數(shù)據(jù)存儲目錄是"/var/lib/mysql"。"/var"是一個系統(tǒng)目錄,不宜存放大量業(yè)務(wù)數(shù)據(jù),通常的解決方案是在系統(tǒng)中掛載一塊數(shù)據(jù)盤,專門用于存儲業(yè)務(wù)數(shù)據(jù)博肋。因此需要在初始化數(shù)據(jù)庫實例之前設(shè)置數(shù)據(jù)存儲目錄掘猿。假設(shè)本例中使用"/data"目錄掛載數(shù)據(jù)盤,具體操作如下:
創(chuàng)建數(shù)據(jù)存儲目錄、錯誤日志目錄、數(shù)據(jù)備份目錄,并設(shè)置所有者用戶和組為"mysql:mysql","mysql"用戶和組在安裝 MySQL8 時已創(chuàng)建。
[centos@host ~]$ sudo mkdir -p /data/mysql/data
[centos@host ~]$ sudo mkdir -p /data/mysql/log
[centos@host ~]$ sudo mkdir -p /data/mysql/backup
[centos@host ~]$ sudo chown -R mysql:mysql /data/mysql
2赋秀、設(shè)置 MySQL8 數(shù)據(jù)庫配置文件參數(shù)樟遣。
使用文本編輯器打開配置文件:
[centos@host ~]$ sudo gedit /etc/my.cnf
修改或驗證文件中的以下參數(shù)并保存:
[mysqld]
# 數(shù)據(jù)存儲目錄,默認(rèn)是/var/lib/mysql文搂。建議存儲到數(shù)據(jù)盤中然遏。
datadir=/data/mysql/data
# 日志文件位置怨酝,默認(rèn)是/var/log/mysqld.log。建議存儲到數(shù)據(jù)盤中汤纸。
log-error=/data/mysql/log/mysqld.log
# 套接字文件位置囊蓝,默認(rèn)是/var/lib/mysql/mysql.sock运杭。
socket=/var/lib/mysql/mysql.sock
# 運(yùn)行時文件位置,默認(rèn)是/var/run/mysqld/mysqld.pid。
pid-file=/var/run/mysqld/mysqld.pid
# 服務(wù)運(yùn)行管理賬戶困曙,默認(rèn)是mysql。
# user=mysql
# 服務(wù)監(jiān)聽端口號车柠,默認(rèn)是3306令花。
# port=3306
# 跳過 IP 地址反向解析域名尤揣,默認(rèn)不啟用蠕嫁。
# skip-name-resolve
# 跳過身份認(rèn)證,默認(rèn)不啟用酸休。
# skip-grant-tables
# 跳過遠(yuǎn)程鏈接是目,默認(rèn)不啟用戏罢。
# skip-networking
3、設(shè)置數(shù)據(jù)庫實例超級管理員賬戶"mysql"的口令。MySQL8 安裝完成后"mysql"的默認(rèn)口令為空,為空時無法使用該用戶在本地登錄數(shù)據(jù)庫裸影。
[centos@host ~]$ sudo passwd mysql
更改用戶 mysql 的密碼 葫慎。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經(jīng)成功更新湖苞。
4、在SELinux模式運(yùn)行時,設(shè)置自定義目錄的安全標(biāo)記和安全策略滚粟。
[centos@host ~]$ sudo semanage fcontext -a -t mysqld_db_t "/data/mysql/data(/.*)?"
[centos@host ~]$ sudo semanage fcontext -a -t mysqld_log_t "/data/mysql/log(/.*)?"
[centos@host ~]$ sudo restorecon -Rv /data/mysql/data
[centos@host ~]$ sudo restorecon -Rv /data/mysql/log
5滞谢、修改或驗證 MySQL8 開機(jī)啟動服務(wù)配置文件清寇。
使用文本編輯器打開配置文件:
[centos@host ~]$ sudo gedit /usr/lib/systemd/system/mysqld.service
修改或驗證文件中的以下參數(shù)并保存:
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
6、啟動數(shù)據(jù)庫實例服務(wù)赏表,并設(shè)置為開機(jī)自動啟動鉴象。
[centos@host ~]$ sudo systemctl daemon-reload
[centos@host ~]$ sudo systemctl start mysqld.service
[centos@host ~]$ sudo systemctl enable mysqld.service
7、開啟遠(yuǎn)程訪問策略捆姜。
1)設(shè)置防火墻端口(CentOS8默認(rèn)安裝firewall防火墻)传趾,允許"3306"端口(MySQL 默認(rèn)端口)訪問服務(wù)器。
[centos@host ~]$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
[centos@host ~]$ sudo firewall-cmd --reload
2)在SELinux模式運(yùn)行時泥技,開啟遠(yuǎn)程訪問安全策略浆兰。
[centos@host ~]$ sudo setsebool -P mysql_connect_any 1
8、設(shè)置數(shù)據(jù)庫超級管理員"root"賬號的口令珊豹。
【首選方案(已安裝 mysql-client 時可用)】
1)初始化 "root" 賬號的口令簸呈。
[centos@host ~]$ mysqladmin -u root password "password"
2)使用"root"賬號登錄客戶端,設(shè)置新的口令和策略店茶。密碼要包含大寫字母蜕便,小寫字母,數(shù)字贩幻,特殊符號轿腺。
[centos@host ~]$ mysql -u root -p
Enter password:
# 初始化root賬號本地登錄的口令两嘴。
# 格式:alter user '<賬號>'@'<客戶端IP策略>' identified by '<登錄密碼>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”,也可以指定具體IP地址或地址段吃溅,如:
# 允許全部遠(yuǎn)程地址訪問溶诞,設(shè)置為:”%”;
# 允許IP地址訪問,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問决侈,設(shè)置為:”192.168.0.%”。
mysql> alter user 'root'@'localhost' identified by 'password';
# 創(chuàng)建root賬號遠(yuǎn)程登錄的策略和口令喧务。
# 格式:create user '<賬號>'@'<客戶端IP策略>' identified with mysql_native_password by '<登錄密碼>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”赖歌,也可以指定具體IP地址或地址段,如:
# 允許全部遠(yuǎn)程地址訪問功茴,設(shè)置為:”%”;
# 允許IP地址訪問庐冯,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問,設(shè)置為:”192.168.0.%”坎穿。
# with mysql_native_password 表示設(shè)置的口令可同時用于遠(yuǎn)程訪問(不指定時用于本地訪問)展父。
mysql> create user 'root'@'%' identified with mysql_native_password by 'password';
# 格式:grant all privileges on <庫名>.<表名> to '<用戶名>'@'<客戶端IP策略>';
# 說明:
# <庫名>和<表名>可以使用通配符”*”代替,表示全部數(shù)據(jù)庫或全部表玲昧;
# <客戶端IP策略>可以使用通配符”%”栖茉,也可以指定具體IP地址或地址段,如:
# 允許全部遠(yuǎn)程地址訪問孵延,設(shè)置為:”%”;
# 允許IP地址訪問吕漂,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問,設(shè)置為:”192.168.0.%”尘应。
mysql> grant all on *.* to 'root'@'%';
# 刷新用戶權(quán)限惶凝。
mysql> flush privileges;
# 連接 mysql 數(shù)據(jù)庫,默認(rèn)數(shù)據(jù)庫犬钢。
mysql>use mysql;
# 查詢已有的策略苍鲜。
mysql> select user,host,authentication_string from user\G;
# 退出客戶端。
mysql> exit;
【備選方案(未安裝 mysql-client 時可用)】
MySQL數(shù)據(jù)庫安裝后玷犹,因"root"賬號未設(shè)置口令所以無法遠(yuǎn)程登錄混滔,需要在服務(wù)器上臨時使用本地用戶免密登錄后設(shè)置"root"賬號的口令才能正常使用。
注意:本地用戶免密登錄和遠(yuǎn)程登錄不可共同開啟箱舞。
1)使用文本編輯器打開配置文件遍坟,修改或驗證文件中的以下參數(shù)并保存。
[centos@host ~]$ sudo gedit /etc/my.cnf
[mysqld]
# 開啟以下兩項設(shè)置后晴股,僅能夠通過本地訪問數(shù)據(jù)庫愿伴,使用超級管理員身份登錄且不需要進(jìn)行身份認(rèn)證。
# 跳過身份認(rèn)證电湘,默認(rèn)不啟用隔节。
skip-grant-tables
# 跳過遠(yuǎn)程鏈接鹅经,默認(rèn)不啟用。
skip-networking
2)重新啟動服務(wù)怎诫。
[centos@host ~]$ sudo systemctl restart mysqld.service
3)免密登錄客戶端并清除"root"賬號口令瘾晃。
[centos@host ~]$ mysql
# 連接 mysql 數(shù)據(jù)庫,默認(rèn)數(shù)據(jù)庫幻妓。
mysql>use mysql;
# 更新 root 賬號口令為空(不能設(shè)置其他口令)蹦误。
mysql>update user set authentication_string='' where user='root';
# 退出客戶端。
mysql> exit;
4)使用文本編輯器打開配置文件肉津,修改或驗證文件中的以下參數(shù)并保存强胰。
[centos@host ~]$ sudo gedit /etc/my.cnf
[mysqld]
# 開啟以下兩項設(shè)置后,僅能夠通過本地訪問數(shù)據(jù)庫妹沙,使用超級管理員身份登錄且不需要進(jìn)行身份認(rèn)證偶洋。
# 跳過身份認(rèn)證,默認(rèn)不啟用距糖。
# skip-grant-tables
# 跳過遠(yuǎn)程鏈接玄窝,默認(rèn)不啟用。
# skip-networking
5)重新啟動服務(wù)悍引。
[centos@host ~]$ sudo systemctl restart mysqld.service
6)使用"root"賬號登錄客戶端恩脂,設(shè)置新的口令和策略。密碼要包含大寫字母吗铐,小寫字母东亦,數(shù)字,特殊符號唬渗。
[centos@host ~]$ mysql -u root
# 初始化root賬號本地登錄的口令典阵。
# 格式:alter user '<賬號>'@'<客戶端IP策略>' identified by '<登錄密碼>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”,也可以指定具體IP地址或地址段镊逝,如:
# 允許全部遠(yuǎn)程地址訪問壮啊,設(shè)置為:”%”;
# 允許IP地址訪問,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問撑蒜,設(shè)置為:”192.168.0.%”歹啼。
mysql> alter user 'root'@'localhost' identified by 'password';
# 創(chuàng)建root賬號遠(yuǎn)程登錄的策略和口令。
# 格式:create user '<賬號>'@'<客戶端IP策略>' identified with mysql_native_password by '<登錄密碼>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”座菠,也可以指定具體IP地址或地址段狸眼,如:
# 允許全部遠(yuǎn)程地址訪問,設(shè)置為:”%”;
# 允許IP地址訪問浴滴,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問拓萌,設(shè)置為:”192.168.0.%”。
# with mysql_native_password 表示設(shè)置的口令可同時用于遠(yuǎn)程訪問(不指定時用于本地訪問)升略。
mysql> create user 'root'@'%' identified with mysql_native_password by 'password';
# 格式:grant all privileges on <庫名>.<表名> to '<用戶名>'@'<客戶端IP策略>';
# 說明:
# <庫名>和<表名>可以使用通配符”*”代替微王,表示全部數(shù)據(jù)庫或全部表屡限;
# <客戶端IP策略>可以使用通配符”%”,也可以指定具體IP地址或地址段炕倘,如:
# 允許全部遠(yuǎn)程地址訪問钧大,設(shè)置為:”%”;
# 允許IP地址訪問,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問罩旋,設(shè)置為:”192.168.0.%”啊央。
mysql> grant all on *.* to 'root'@'%';
# 刷新用戶權(quán)限。
mysql> flush privileges;
# 連接 mysql 數(shù)據(jù)庫瘸恼,默認(rèn)數(shù)據(jù)庫劣挫。
mysql>use mysql;
# 查詢已有的策略。
mysql> select user,host,authentication_string from user \G;
# 退出客戶端东帅。
mysql> exit;
3.MySQL8 的管理
1、啟動數(shù)據(jù)庫
[centos@host ~]$ sudo systemctl start mysqld.service
2球拦、停止數(shù)據(jù)庫
[centos@host ~]$ sudo systemctl stop mysqld.service
3靠闭、重啟數(shù)據(jù)庫
[centos@host ~]$ sudo systemctl restart mysqld.service
4、查看數(shù)據(jù)庫狀態(tài)坎炼、進(jìn)程愧膀、端口
[centos@host ~]$ sudo systemctl status mysqld.service
[centos@host ~]$ sudo ps -ef | grep mysqld
[centos@host ~]$ sudo netstat -ntap | grep mysqld
5、開啟數(shù)據(jù)庫開機(jī)自啟動
[centos@host ~]$ sudo systemctl enable mysqld.service
6谣光、禁用數(shù)據(jù)庫開機(jī)自啟動
[centos@host ~]$ sudo systemctl disable mysqld.service
7檩淋、本地客戶端登錄數(shù)據(jù)庫
[centos@host ~]$ mysql -u root -p
Enter password:
mysql>
8、遷移數(shù)據(jù)庫
1)停止數(shù)據(jù)庫萄金。
[centos@host ~]$ sudo systemctl stop mysqld.service
2)創(chuàng)建新的目錄蟀悦,遷移數(shù)據(jù)庫的相關(guān)文件,并為新的目錄設(shè)置安全標(biāo)簽氧敢。
[centos@host ~]$ sudo mkdir -p /data/new-mysql/data
[centos@host ~]$ sudo mkdir -p /data/new-mysql/log
[centos@host ~]$ sudo mkdir -p /data/new-mysql/backup
[centos@host ~]$ sudo chown -R mysql:mysql /data/new-mysql
[centos@host ~]$ sudo cp -a /data/mysql/data /data/new-mysql/data
[centos@host ~]$ sudo cp -a /data/mysql/log /data/new-mysql/log
[centos@host ~]$ sudo cp -a /data/mysql/backup /data/new-mysql/backup
[centos@host ~]$ sudo semanage fcontext -a -t mysqld_db_t "/data/new-mysql/data(/.*)?"
[centos@host ~]$ sudo semanage fcontext -a -t mysqld_log_t "/data/new-mysql/log(/.*)?"
[centos@host ~]$ sudo restorecon -Rv /data/new-mysql/data
[centos@host ~]$ sudo restorecon -Rv /data/new-mysql/log
3)使用文本編輯器打開配置文件日戈,修改或驗證文件中的以下參數(shù)并保存。
[centos@host ~]$ sudo gedit /etc/my.cnf
[mysqld]
# 數(shù)據(jù)存儲目錄孙乖,默認(rèn)是/var/lib/mysql浙炼。建議存儲到數(shù)據(jù)盤中。
datadir=/data/new-mysql/data
# 日志文件位置唯袄,默認(rèn)是/var/log/mysqld.log弯屈。建議存儲到數(shù)據(jù)盤中。
log-error=/data/new-mysql/log/mysqld.log
4)啟動數(shù)據(jù)庫恋拷。
[centos@host ~]$ sudo systemctl start mysqld.service
9资厉、管理用戶和客戶端的策略
1)創(chuàng)建新的用戶和客戶端策略:
[centos@host ~]$ mysql -u root -p
Enter password:
# 格式:create user '<賬號>'@'<客戶端IP策略>' identified with mysql_native_password by '<登錄密碼>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”,也可以指定具體IP地址或地址段梅掠,如:
# 允許全部遠(yuǎn)程地址訪問酌住,設(shè)置為:”%”;
# 允許IP地址訪問店归,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問,設(shè)置為:”192.168.0.%”酪我。
# with mysql_native_password 表示設(shè)置的口令可同時用于遠(yuǎn)程訪問(不指定時用于本地訪問)消痛。
mysql> create user 'root'@'%' identified with mysql_native_password by 'password';
mysql> flush privileges;
mysql> exit;
2)修改現(xiàn)有的用戶和客戶端管理策略:
[centos@host ~]$ mysql -u root -p
Enter password:
# 格式:alter user '<賬號>'@'<客戶端IP策略>' identified with mysql_native_password by '<登錄密碼>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”,也可以指定具體IP地址或地址段都哭,如:
# 允許全部遠(yuǎn)程地址訪問秩伞,設(shè)置為:”%”;
# 允許IP地址訪問,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問欺矫,設(shè)置為:”192.168.0.%”纱新。
# with mysql_native_password 表示設(shè)置的口令可同時用于遠(yuǎn)程訪問(不指定時用于本地訪問)。
mysql> alter user 'root'@'%' identified with mysql_native_password by 'password';
mysql> flush privileges;
mysql> exit;
3)刪除現(xiàn)有的用戶和客戶端策略:
[centos@host ~]$ mysql -u root -p
Enter password:
# 格式:drop user '<賬號>'@'<客戶端IP策略>';
# 說明:
# <客戶端IP策略>可以使用通配符”%”穆趴,也可以指定具體IP地址或地址段脸爱,如:
# 允許全部遠(yuǎn)程地址訪問,設(shè)置為:”%”;
# 允許IP地址訪問未妹,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問簿废,設(shè)置為:”192.168.0.%”。
mysql> drop user 'root'@'%';
mysql> flush privileges;
mysql> exit;
4)為用戶和客戶端授予訪問權(quán)限:
[centos@host ~]$ mysql -u root -p
Enter password:
# 格式:grant all privileges on <庫名>.<表名> to '<用戶名>'@'<客戶端IP策略>';
# 說明:
# <庫名>和<表名>可以使用通配符”*”代替络它,表示全部數(shù)據(jù)庫或全部表族檬;
# <客戶端IP策略>可以使用通配符”%”,也可以指定具體IP地址或地址段化戳,如:
# 允許全部遠(yuǎn)程地址訪問单料,設(shè)置為:”%”;
# 允許IP地址訪問,設(shè)置為:”192.168.0.1”;
# 允許IP地址段訪問点楼,設(shè)置為:”192.168.0.%”扫尖。
mysql> grant all on *.* to 'root'@'%';
mysql> flush privileges;
mysql> exit;
5)查詢已有的客戶端策略:
[centos@host ~]$ mysql -u root -p
Enter password:
mysql> use mysql;
mysql> select user,host,authentication_string from user \G;
mysql> exit;
4.MySQL8 備份數(shù)據(jù)庫
1、備份庫
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --database 數(shù)據(jù)庫名 > 文件名.sql
例如:
[centos@host ~]$ mysqldump -h 192.168.0.1 -p 3306 -u root -p password --database cmdb > /data/mysql/backup/cmdb.sql
2盟步、備份庫并壓縮
導(dǎo)出的數(shù)據(jù)有可能比較大藏斩,不好備份到遠(yuǎn)程,這時候就需要進(jìn)行壓縮却盘。
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --database 數(shù)據(jù)庫名 | gzip > 文件名.sql.gz
例如:
[centos@host ~]$ mysqldump -h 192.168.0.1 -p 3306 -u root -p password --database cmdb | gzip > /data/mysql/backup/cmdb.sql.gz
3狰域、備份同個庫多個表
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --database 數(shù)據(jù)庫名 表1 表2 .... > 文件名.sql
例如:
[centos@host ~]$ mysqldump -h 192.168.1.100 -p 3306 -u root -p password cmdb t1 t2 > /data/mysql/backup/cmdb_t1_t2.sql
4、同時備份多個庫
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --databases 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 數(shù)據(jù)庫名3 > 文件名.sql
例如:
[centos@host ~]$ mysqldump -h 192.168.0.1 -u root -p password --databases cmdb bbs blog > /data/mysql/backup/mutil_db.sql
5黄橘、備份實例上所有的數(shù)據(jù)庫
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --all-databases > 文件名.sql
例如:
[centos@host ~]$ mysqldump -h 192.168.0.1 -u root -p password --all-databases > /data/mysql/backup/all_db.sql
6兆览、備份數(shù)據(jù)庫(含已刪除數(shù)據(jù)庫或者表的sql備份)
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --add-drop-table --add-drop-database 數(shù)據(jù)庫名 > 文件名.sql
例如:
[centos@host ~]$ mysqldump -h 192.168.0.1 -u root -p password --add-drop-table --add-drop-database cmdb > /data/mysql/backup/all_db.sql
7、備份數(shù)據(jù)庫結(jié)構(gòu)塞关,不備份數(shù)據(jù)
格式:mysqldump -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 --no-data 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 數(shù)據(jù)庫名3 > 文件名.sql
例如:
[centos@host ~]$ mysqldump -h 192.168.0.1 -u root -p password --no-data –databases db1 db2 cmdb > /data/mysql/backup/structure.sql
8抬探、恢復(fù)數(shù)據(jù)庫
格式:mysql -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 < 文件名.sql
例如:
[centos@host ~]$ mysql -h 192.168.0.1 -u root -p password < /data/mysql/backup/structure.sql
4.MySQL8 導(dǎo)入數(shù)據(jù)
1、語法:
格式:mysqlimport -h 主機(jī)名 -p 端口 -u 用戶名 -p 密碼 [--local] dbname file [option]
2、說明:
- [--local]:表示從客戶端任意路徑讀取文件導(dǎo)入表中小压,未設(shè)置該選項時线梗,默認(rèn)只從 datadir 下同名數(shù)據(jù)庫目錄下讀取文件導(dǎo)入;
- dbname:表示數(shù)據(jù)庫名稱怠益;
- file:表示數(shù)據(jù)文本文件的路徑和名稱仪搔;
- [option]:表示附加選項,如下:
--fields-terminated-by=字符串:設(shè)置字符串為字段的分隔符蜻牢,默認(rèn)值是“\t”烤咧;
--fields-enclosed-by=字符:設(shè)置字符來括上字段的值;
--fields-optionally-enclosed-by=字符:設(shè)置字符括上char抢呆、varchar煮嫌、text等字符型字段;
--fields-escaped-by=字符:設(shè)置轉(zhuǎn)義字符抱虐;
--lines-terminated-by=字符串:設(shè)置每行的結(jié)束符昌阿;
--ignore-lines=n:表示可以忽略前幾行。
3恳邀、示例(導(dǎo)入文本到數(shù)據(jù)庫):
[centos@host ~]$ mysqlimport -h 192.168.0.1 -u root -p password mysqldb data.txt
注意:本例中數(shù)據(jù)庫名稱是"mysqldb"宝泵,導(dǎo)入數(shù)據(jù)的表名是"data",導(dǎo)入的數(shù)據(jù)文件名是"data.txt"轩娶,導(dǎo)入數(shù)據(jù)表名與數(shù)據(jù)文件的主文件名必須是一致的。