1. 程式人生 > >Mysql5.7.20安裝文檔

Mysql5.7.20安裝文檔

gda safe gre The case lsp 選項 lin query

Mysql5.7.20安裝文檔

一、Linxu下數據庫的恢復和備份

當我們MySQL數據庫保存重要數據的時候,備份工作極為重要。本文介紹如何使用mysqldump備份和恢復數據,使用該方法,可以將數據庫中的數據備份成一個文本文件,也可將備份好的數據庫遷移到另一臺的服務器。(後面是實際操作的過程)

(1) 從命令行備份MySQL數據庫

在Linux操作系統中,我們可以使用mysqldump命令進行備份。該命令將連接MySQL服務器並創建SQL轉儲文件,該文件包含了重新創建數據庫所必需的所有SQL語句。該命令的基本語法如下:

$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

[uname] 數據庫用戶名

[pass] 數據庫密碼

[dbname] 數據庫名

[backupfile.sql] 數據庫備份文件名

[--opt] mysqldump選項

例如:備份數據庫Tuixin到20131112.sql文件,你可以簡單地使用以下命令:

$ mysqldump -u root -p Tuixin > 20131112.sql

如果有必要一次導出所有的數據庫,可使用--all-databases選項,命令如下:

$ mysqldump -u root -p --all-databases > 20131112.sql

如果mysql數據庫較大,你可能希望能壓縮mysqldump導出的SQL文件,此時僅需使用如下的備份命令,並通過管道連接到gzip,此時便可導出gzip文件。

$ mysqldump -u root -p Tuixin | gzip -9 > 20131112.sql.gz

解壓縮方法如下:

$ gunzip 20131112.sql.gz

(2) 從命令行恢復MySQL數據庫

通過上面的方法,我們已經將數據庫Tuixin備份至20131112.sql文件,接下來,我們恢復Tuixin數據庫:

* 在目標機器上創建相應的數據庫名

* 使用mysql命令載入sql文件

$ mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

例如,我們現在恢復20131112.sql文件到Tuixin數據庫:

$ mysql -u root -p Tuixin < 20131112.sql

如果是恢復壓縮的備份文件,可遵循以下格式:

$ gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [dbname]

如果是恢復已經存在的數據庫,此時可使用mysqlimport命令,該命令的語法格式如下:

$ mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]

實際操作步驟:

備份:

利用mysqldump的—all-databases參數可以一口氣把你數據庫root用戶下的所有數據庫一口氣導出到一個sql文件裏。然後,重裝系統後使用source命令可以再一口氣倒回來。

導出全部數據庫mysqldump -uroot -p --all-databases > sqlfile.sql

此操作會把數據庫服務器root用戶下的所有數據庫都導出來。如果回車後提示Enter Password:請輸入你的mysql root密碼。

導入:

1.登錄mysal:

mysql–u root –p

根據提示輸入密碼

然後:

Source 備份文件的路徑;

記得這句後面有分號哈。

二、MySQL5.7.20的下載

一、首先到官網下載吧:

https://www.mysql.com/downloads/

技術分享圖片

技術分享圖片

技術分享圖片

三、解壓並安裝:

#tar -xvf mysql-5.7.18-1.el6.x86_64.rpm-bundle.tar

解壓後有如下rpm:

安裝方式一:

cd 到解壓開的目錄

yum -y localinstall mysql*

安裝方式二:

#rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm

可以采用這種一個包一個包的安裝方式,但是本人不推薦。

四、啟動並設置:

1、啟動

Centos6的啟動方法:

# service mysqld start

查看狀態

# service mysqld status

Centos7的啟動方法:

# systemctl start mysqld

查看狀態:

# systemctl status mysqld

2、首次啟動涉及的設置

這種方式安裝好後,會再my.cnf文件中自動生成一個密碼,執行看一下吧:

# cat /var/log/mysqld.log | grep password

2017-05-13T05:39:44.497086Z 1 [Note] A temporary password is generated for root@localhost: pKsO:Jin<4f%

密碼就是這麽復雜,復制吧,不然手輸還容易出錯。

登陸:#mysql -u root -p

Enter password:pKsO:Jin<4f%

登陸成功,但是這時候,還不能做任何事情。隨便你做什麽都會提示你:

ERROR 1820 (HY000): You must reset your passwordusing ALTER USER statement before executing this statement.

那就來reset吧

mysql> SET PASSWORD = PASSWORD(‘Mysql5720‘);

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

(密碼過於簡單,必須大寫,小寫,數字,符號)

mysql> SET PASSWORD = PASSWORD(‘Mysql5720%‘);

Query OK, 0 rows affected, 1 warning (0.00 sec)

CREATE USER ‘root‘@‘%‘ IDENTIFIED BY ‘bigdata@2016‘;

CREATE USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘bigdata@2016‘;

GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘bigdata@2016‘;

GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘localhost‘ IDENTIFIED BY ‘bigdata@2016‘;

flush privileges;

好了,現在終於可以操作了:

mysql> create database roger;

Query OK, 1 row affected (0.01 sec)

mysql> use roger;

Database changed

mysql>

額外:一般自己裝個mysql就是用來測試的,結果密碼還那麽麻煩,哪天忘記了都有可能,想要設置簡單的密碼,把密碼安全級別設置低一點吧:

mysql> set global validate_password_policy=0;//0最低,1中級,2最強驗證級別

Query OK, 0 rows affected (0.00 sec)

五、授權遠程連接:

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘Mysql5720%‘ WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

這樣,我們就可以在其他電腦上的mysql客戶端遠程連接linux上的mysql數據庫了:(例如在win cmd裏面)

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -u root -pMysql5718% -h 192.168.231.8 -D roger

六、拓展:MySQL5.7.20的密碼設置修改

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

為了加強安全性,MySQL5.7為root用戶隨機生成了一個密碼,在error log中,關於error log的位置,如果安裝的是RPM包,則默認是/var/log/mysqld.log。

一般可通過log_error設置

mysql> select @@log_error;
+---------------------+
| @@log_error         |
+---------------------+
| /var/log/mysqld.log |
+---------------------+
1 row in set (0.00 sec)

可通過# grep "password" /var/log/mysqld.log 命令獲取MySQL的臨時密碼

2016-01-19T05:16:36.218234Z 1 [Note] A temporary password is generated for root@localhost: waQ,qR%be2(5

用該密碼登錄到服務端後,必須馬上修改密碼,不然會報如下錯誤:

mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改為一個簡單的密碼,會報以下錯誤:

mysql>  ALTER USER USER() IDENTIFIED BY ‘12345678‘;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

這個其實與validate_password_policy的值有關。

validate_password_policy有以下取值:

Policy

Tests Performed

0 or LOW

Length

1 or MEDIUM

Length; numeric, lowercase/uppercase, and special characters

2 or STRONG

Length; numeric, lowercase/uppercase, and special characters; dictionary file

默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。

有時候,只是為了自己測試,不想密碼設置得那麽復雜,譬如說,我只想設置root的密碼為123456。

必須修改兩個全局參數:

首先,修改validate_password_policy參數的值

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

這樣,判斷密碼的標準就基於密碼的長度了。這個由validate_password_length參數來決定。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

validate_password_length參數默認為8,它有最小值的限制,最小值為:

validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)

其中,validate_password_number_count指定了密碼中數據的長度,validate_password_special_char_count指定了密碼中特殊字符的長度,validate_password_mixed_case_count指定了密碼中大小字母的長度。

這些參數,默認值均為1,所以validate_password_length最小值為4,如果你顯性指定validate_password_length的值小於4,盡管不會報錯,但validate_password_length的值將設為4。如下所示:

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)
 
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)

如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一個值,則validate_password_length將進行動態修改。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)
 
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.00 sec)
 
mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    2 |
+--------------------------------------+
1 row in set (0.00 sec)
 
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          6 |
+----------------------------+
1 row in set (0.00 sec)

當然,前提是validate_password插件必須已經安裝,MySQL5.7是默認安裝的。

那麽如何驗證validate_password插件是否安裝呢?可通過查看以下參數,如果沒有安裝,則輸出將為空。

mysql> SHOW VARIABLES LIKE ‘validate_password%‘;
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 2     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

七:附表:字符設置

[root@bianyi ~]# cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted

security risks 這是完整的一句話,放不下,分成兩行了

symbolic-links=0

#default-character-set = utf8 在這個版本中,不要添加這一句,否則會引起字符設置沖突的問題,mysqld啟動不了

character_set_server=utf8

init_connect=‘SET NAMES utf8‘

[mysql]

default-character-set = utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

default-character-set = utf8

[root@bianyi ~]#

八、安全快速修改Mysql數據庫名的5種方法

1. RENAME DATABASE db_name TO new_db_name
這個。。這個語法在mysql 5.1.7中被添加進來,到了5.1.23又去掉了。
據說有可能丟失數據。還是不要用的好。
詳見: http://dev.mysql.com/doc/refman/5.1/en/rename-database.html

2.如果所有表都是MyISAM類型的話,可以改文件夾的名字
關閉mysqld
把data目錄中的db_name目錄重命名為new_db_name
開啟mysqld

3.重命名所有的表

代碼如下:

CREATE DATABASE new_db_name;
RENAME TABLE db_name.table1 TO new_db_name.table1,
db_name.table2 TO new_db_name.table2;
DROP DATABASE db_name;

4. mysqldump導出數據再導入

代碼如下:

mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.SQL
mysql -uxxxx -pxxxx -h xxxx -e “CREATE DATABASE new_db_name”
mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.SQL
mysql -uxxxx -pxxxx -h xxxx -e “DROP DATABASE db_name”

5.使用shell腳本重命名所有的表

代碼如下:

#!/bin/bash

mysqlconn=”mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost”
olddb=”db_name”
newdb=”new_db_name”

#$mysqlconn -e “CREATE DATABASE $newdb”
params=$($mysqlconn -N -e “SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=‘$olddb‘”)

for name in $params; do
$mysqlconn -e “RENAME TABLE $olddb.$name to $newdb.$name”;
done;

#$mysqlconn -e “DROP DATABASE $olddb”

就是方法3的優化版。
小編註:以上這些操作都是危險的,所以請在執行操作前,備份你的數據庫!!

九、卸載mysql數據庫

檢查之前是否安裝過mysql,刪除之前安裝的mysql

# rpm -qa | grep mysql

# rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps

# find / -name mysql

# rm -rf …

註意:卸載不了就強制卸載,--nodeps --force

Mysql5.7.20安裝文檔