CentOS 7 中以命令列方式安裝 MySQL 5.7.11 for Linux Generic 二進位版本教程詳解_Mysql

來源:互聯網
上載者:User

MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定發行版安裝包(如 .rpm)以及二進位通用版安裝包(.tar.gz)。一般情況下,很多項目都傾向於採用二進位通用安裝包形式來進行安裝配置,自訂非常方便。但在安裝過程中發現,其實官方提供的安裝說明檔案太過簡單,而且裡面的參數還有問題,依照執行後,mysql 服務啟動報錯,尋找了一些資料並反覆實驗後,自己總結出一套切實可行的安裝配置流程,具體如下:

1、下載 MySQL for Linux Generic 二進位版本安裝包(.tar.gz),這裡以 5.7.11 版本為例。

2、我一般習慣於將 MySQL 安裝到 /opt 目錄下,所以我將 MySQL 安裝包檔案複製到 /opt 目錄下,切換為 root 帳號後執行以下命令:

# tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz# ln -s mysql-5.7.11-linux-glibc2.5-x86_64 mysql # cd mysql

建立一個 mysql 的軟串連,是為了以後方便配置與操作。

3、5.7.11 版本的通用二進位安裝包經解壓後得到的 MySQL 目錄,內部並未包含資料檔案存放的目錄,所以需要單獨再建立一個子目錄用於存放資料檔案,比如取名為 data,在第二步命令後(確保在 /opt/mysql 目錄下),繼續執行如下命令:

# groupadd mysql# useradd -r -g mysql -s /bin/false mysql# mkdir data# chown -R root:root .# bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data# bin/mysql_ssl_rsa_setup --datadir=/opt/mysql/data

這裡特別說明一下,根據官方文檔說法,從 5.7.6 版本開始,MySQL 初始化使用 mysqld --initialize 命令,不再使用 mysql_install_db 命令了。但是官方文檔給出的 mysqld --initialize 命令並沒有給出 --basedir 以及 --datadir 參數,因為它預設使用 /etc/my.cnf 設定檔。有些 Linux 發行版在安裝過程中可能會預設產生這個 mysql 設定檔並儲存在 /etc 目錄下,而預設設定檔中的 basedir、datadir 是被注釋的,沒有實際內容,這樣 mysqld 實際上還是不知道當前的 basedir、datadir 具體是哪個目錄。所以這裡就通過命令列參數指定我們的自訂目錄。包括 mysql_ssl_rsa_setup 命令也要指定 datadir 目錄,因為資料庫需要的密鑰檔案也都和資料檔案儲存在一起,都位於 datadir 目錄內。

4、上述工作完成後,先不慌啟動資料庫服務,這時還要建立 MySQL 服務的設定檔 my.cnf。這個檔案可以從 /opt/mysql/support-files 子目錄下找到一個叫 my-default.cnf 的配置範例檔案,然後複製一個出來,改名為 my.cnf 並放到 /opt/mysql 下即可。根據 MySQL 的規則,它的設定檔必須以 my.cnf 命名,讀取的順序是先嘗試讀取 /etc/my.cnf,如果不存在則再讀取 basedir 目錄下的 my.cnf,如果系統內容變數沒有 basedir,則嘗試讀取服務啟動所在目前的目錄下的 my.cnf,這裡就是 /opt/mysql/my.cnf 這種情況,如果還是不存在,則讀取目前使用者家目錄下的 .mysql/my.cnf(需要看官方文檔確認一下,記不清了)。所以,我們這裡只需保證在 /opt/mysql 下有一個 my.cnf,修改其中的內容為如下:

basedir = /opt/mysqldatadir = /opt/mysql/datalog-error = /var/log/mysql-error.log

其餘的不變。根據官方文檔,log-error 用來指定服務啟動後的運行資訊記錄檔路徑,運行資訊包括 Notice、Error 等類型的日誌。

5、設定檔修改儲存好後,就可以啟動服務了,確保目前的目錄為 /opt/mysql,然後運行以下命令:

# bin/msyqld_safe --user=mysql &

這時服務就可以正常啟動了。你還可以通過命令 netstat -na -t 查看 MySQL 服務的連接埠 3306 是否已經處在監聽狀態,如果是,則表示服務啟動正常。當然,你也可以查看記錄檔的內容來確定,我們這裡因為在已在設定檔中指定記錄檔為 /var/log/mysql-error.log,所以查看該檔案即可。

6、在本機登入 MySQL 服務,從 5.7.10 版本開始不允許 root 空密碼登入了。其實在執行 mysqld --initialize 後系統就會為 root 產生一個初始化密碼,並在螢幕標準輸出時顯示出來,這個要記住!用這個密碼第一次登入後,才能再修改密碼,這裡假定系統產生的初始化密碼為 xxxxxx,命令如下:

# bin/mysql --user=root --password=xxxxxx

這樣就可以登入 MySQL 伺服器了。

7、登入以後,系統要求必須修改 root 帳號的密碼,MySQL 命令如下:

mysql> set password=password('1234');

這樣就可以把 root 帳號改為 1234 了。

8、在 Linux 下為了安全,預設是不允許 MySQL 伺服器本機以外的機器訪問 MySQL 資料庫服務的,因此需要重新授權 root 帳號。方便其他機器遠端存取 MySQL 伺服器,MySQL 命令如下:

mysql> grant all privileges on *.* to root@'%' identified by '1234';mysql> flush privileges;

這樣就可以允許從其他機器用 root 帳號遠程登入 MySQL 伺服器了,可以用下面的 MySQL 命令來驗證一下:

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

證明系統資料表 user 中已經增加了一條關於 root 遠程登入的記錄。

9、補充一下如何停止 mysql 服務的命令:

# mysqladmin --user=root --password shutdown

這裡 root 是 mysql 資料庫的 root,並不是作業系統的帳號,這點不要搞混了,該命令會提示輸入 mysql root 的密碼,正確的話就會停止 mysql 服務了。  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.