通過yum安裝MySQL_5.7.25詳細過程

一、添加MySQL Yum存儲庫

首先,將MySQL Yum存儲庫添加到系統的存儲庫列表中。這是一次性操作,可以通過安裝MySQL提供的RPM來執行。

MySQL Developer Zone中的下載MySQL Yum存儲庫頁面: https://dev.mysql.com/downloads/repo/yum/

注意

一旦在您的系統上啓用了MySQL Yum存儲庫,如果yum update 命令(或Fedora的dnf升級)找到更高的版本,都將升級系統上的MySQL軟件包並替換任何本機第三方軟件包。

官網最新的庫包含MySQL8.0,穩妥起見提供一個官方的舊版本repo地址,防止yum update把MySQL更新到最新。當然,最穩妥的辦法是安裝完畢後把庫文件刪除。

https://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

shell> rpm -Uvh mysql57-community-release-el7-8.noarch.rpm

安裝命令將MySQL Yum存儲庫添加到系統的存儲庫列表中,並下載GnuPG密鑰以檢查軟件包的完整性。

shell> yum repolist enabled | grep "mysql.*-community.*"


二、確認選擇發佈系列

vi /etc/yum.repos.d/mysql-community.repo,找到要配置的子存儲庫的條目,然後編輯該enabled選項。

指定 enabled=0禁用子存儲庫,或 enabled=1啓用子存儲庫,確認mysql57爲開啓狀態,其餘爲關閉狀態。

[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

您應該確保只啓用一個MySQL系列的存儲庫。當啓用多個版本系列的子存儲庫時,Yum將使用最新的系列。

shell> yum repolist enabled | grep mysql


三、安裝MySQL

通過以下命令安裝MySQ:

shell> sudo yum install mysql-community-server

這將安裝MySQL server(mysql-community-server)以及運行服務器所需組件的,包括client(mysql-community-client

客戶端和服務器的常見錯誤消息和字符集(mysql-community-common)以及共享客戶端庫(mysql-community-libs

最後建議把 mysql-community-lib-compat也裝上(替換mariadb-lib)

yum 安裝的好處就是自動幫助處理缺少的依賴包和解決衝突包,例如安裝libaio和net-tools,刪除mariadb-lib……否則RPM安裝的時候還要手工處理這些問題,這裏就不展開了


四、初始化

1、編輯systemd和my.cnf

  • 從MySQL 5.7.10開始,通過yum、RPM安裝時,已經把默認使用systemd替換掉了原來的mysqld_safe;

  • 使用systemctl edit mysqld或者修改/etc/systemd/system/mysqld.service.d/override.conf來更改PIDFile和Execstart的路徑,從而實現自定義參數,/etc/systemd/system/mysqld.service.d若不存在請自行創建。

  • 原有SQL的配置文件(這裏一般指/etc/my.cnf)任何關於PIDFile的設置將被忽略,部分mysql_safe的參數要進行修改,部分可以配置到[mysqld],這裏不做展開了

  • 啓動參數(ExecStart)必須設置PIDFile的路徑,第一個“ExecStart=”這一行不能省去,刪掉的話將不能啓動猜測邏輯是先用空參數覆蓋/usr/lib/systemd/system/mysqld.service 的啓動參數,再通過第二個含參數的ExecStart實現自定義參數啓動

  • 最後,systemd配置方式和mysqld_safe是相互衝突的,因此自編譯的時候尤其注意(RPM、yum安裝的默默接受systemd這個事實吧……)

編寫override.conf

[Service]

PIDFile=/opt/mysql/mysqld.pid

ExecStart=

ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/opt/mysql/DB_Server01.pid $MYSQLD_OPTS

編寫/etc/my.cnf

[mysqld]

server-id = 1

port = 3306

event_scheduler = 1

character-set-server = utf8

collation-server = utf8_general_ci

default-storage-engine = INNODB

default-time-zone = '+08:00'

bind-address = 0.0.0.0

symbolic-links = 0

user = mysql

socket = /opt/mysql/mysqld.sock

datadir = /opt/mysql/data

tmpdir = /opt/mysql/tmp

skip-external-locking

max_connections = 1000

max_allowed_packet = 500M

key_buffer_size = 16M

thread_stack = 192K

thread_cache_size = 8

query_cache_limit = 1M

query_cache_size = 16M

#########log file setting##########

log_timestamps = SYSTEM

log_error = /opt/mysql/log/error.log

log-bin = /opt/mysql/log/DB_Server01-mysql-bin

binlog-format=Row

expire_logs_days = 10

max_binlog_size = 100M

slow-query-log-file = /opt/mysql/DB_Server01-slow.log

general-log-file = /opt/mysql/log/DB_Server01.log

[client]

default-character-set = utf8

socket = /opt/mysql/mysqld.sock


初始化的時候必須設置--defaults-file,否則不會自動讀取/etc/my.cnf(從5.6過來最常見的隕石巨坑)

mysqld --defaults-file=/etc/my.cnf --initialize

劃重點:my.cnf內標識了使用mysql用戶,因此my.cnf內所有提及到的目錄的所有者必須爲mysql,否則將不能成功啓動。

chown  -Rh mysql.mysql /opt/mysql


五、啓動MySQL服務器

使用以下命令啓動MySQL服務器:

shell> sudo service mysqld start

您可以使用以下命令檢查MySQL服務器的狀態:

shell> sudo service mysqld status

在服務器初始啓動時,如果服務器的數據目錄爲空,則會發生以下情況:

  • 服務器已初始化。

  • SSL證書和密鑰文件在數據目錄中生成。

  • validate_password 已安裝並已啓用。

  • 'root'@'localhost創建一個超級用戶帳戶。設置超級用戶的密碼並將其存儲在錯誤日誌文件中。要顯示它,請使用以下命令:

獲取root初始自動生成的臨時密碼:

shell> sudo grep 'temporary password' /var/log/mysqld.log | awk -F":" '{print $4}' (這是默認情況)

如果使用上文的my.cnf初始化,並且修改過log的路徑,則自行替換,如上面列出的my.cnf,log_error = /opt/mysql/log/error.log,那麼就對應修改爲:

shell> sudo grep 'temporary password' /opt/mysql/log/error.log | awk -F":" '{print $5}'

(由於my.cnf裏面增加了+08:00,修改後就是print $5,不要照搬)

通過使用生成的臨時密碼登錄併爲超級用戶帳戶設置自定義密碼,儘快更改root密碼:

shell> mysql -uroot -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

題外話:沒事不要亂升級,有可能因爲一個小版本導致你在安裝的過程中懷疑人生,這是我折騰了3天的真實感受……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章