centos通過yum安裝mysql
前言
前天按照Oracle上的文件裝了一遍mysql,選了最新8.0的版本,後來出現一些問題,網上搜答案,出來的基本還是5.x版本的解決方案,並不適用8.0版本。然後我就去看了一下公司的正式環境買的阿里雲rds版本,5.7。既然如此,重新裝一下5.7保持和正式環境一致是必須的了。但,我突然就有點好奇,為什麼當時沒有裝6.0 或者7.0版本,畢竟跨了2個大版本。更奇怪的是,看了一下mysql的官方文件的版本列表,發現也沒有6.0 or 7.0的文件。
這下就好玩了,為什麼沒有6.x,7.x。
網上搜了一下。
大意就是,6因為一些效能問題一下子沒起來。然後Oracle收購了Sun,停止的6的開發,然後7相關的功能統一合併到了8裡面去。所以,8就成了最新的重要版本。
言歸正傳
文件 ofollow,noindex" target="_blank">地址 ,注意是5.7版本。
安裝部分
可以分為以下幾步:
- 解除安裝之前的
- 安裝新的
- 啟動服務
-
解除安裝之前的版本。
yum erase mysql
-
選y,完成
-
完成之後檢查一下
/etc/my.cnf
和/etc/mysql
如果還是存在,需要手動刪除。發現多了一個my.cnf.rpmsave
,rpm幫忙儲存的,我們這裡也不需要,可以直接刪除。 -
libaio
是mysql的一個依賴項,可以先裝一下(不過上次安裝8.0的時候沒有裝,應該會自動裝的)。libnuma
是mysql中NUMA功能的一個依賴項,也一起先手動裝一下算了。yum install libaio yum install libnuma
-
通過 地址 根據自己的系統,選擇自己需要的版本,我係統是centos7.5,所以選 el7 。 通過
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
下載到伺服器上,儲存地址隨意。雖然名字是mysql80,這個只是表示預設啟用的是8.0版本,裡面其實包含好幾個版本,後面可以配置啟用的具體版本。 -
sudo yum localinstall mysql80-community-release-el7-1.noarch.rpm
先安裝rpm配置。 -
yum repolist enabled | grep "mysql.*-community.*"
看下是否已經新增成功。 -
出來的還是8.0的版本,下面配置一下禁用8.0,啟用5.7。
sudo yum-config-manager --disable mysql80-community sudo yum-config-manager --enable mysql57-community
-
再看一下yum啟用的版本情況.
yum repolist enabled | grep "mysql.*-community.*"
-
然後就可以安裝了。
sudo yum install mysql-community-server
,報了一個錯。需要5.7版本的common,安裝的確是8.0版本的common。 -
上面的問題應該有兩種選擇
--skip-broken
-
先試一下第一種。
yum erase mysql-community-common
刪除完成。重新嘗試安裝。sudo yum install mysql-community-server
。沒有報錯,按y繼續安裝。done。 -
啟動服務。centos7推薦使用
systemctl start mysqld.service
。哈哈,失敗了~~ -
如果是全新安裝應該是不會有問題的,根據提示看下錯誤情況。
-
根據提示去搜一下原因。搜了一下,是由於原先裝過8.0,然後建立了資料導致的,這裡直接刪掉就可以了。然後啟動服務,沒有報錯。
-
看一下服務狀態
sudo systemctl status mysqld.service
,running。
設定部分
分為以下幾個部分:
- 設定root使用者密碼
- 建立使用者,設定密碼,分配許可權。
- 配置遠端連線。
-
mysql 服務第一次啟動,會自動做以下幾件事情.
- 啟動服務。
- 在資料目錄(/var/lib/mysql)生成ssl證書和祕鑰檔案
- 安裝並啟用 validate_password 外掛。這個外掛預設啟用,他要求密碼至少8位,並且要求有一個大寫,一個小寫,一個數字,以及一個特殊字元。
- 建立了
'root'@'localhost'
這個使用者,密碼存到/var/log/mysqld.log
中。
-
檢視一下密碼。
sudo grep 'temporary password' /var/log/mysqld.log
-
通過臨時密碼登入,然後修改臨時密碼。
mysql -u root -p
-
修改成功。用新密碼登入然後試試語句是否可以執行。沒有問題。
-
登入mysql然後建立一個使用者用於遠端登入。
CREATE USER 'root1'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxxxxxx';
。%表示任意地址可以連線。xxx是具體的密碼,要符合上面的密碼規則。密碼的驗證方式是mysql_native_password。 -
下面分配許可權.
grant all privileges on *.* to 'root1'@'%'
把所有許可權分配給root1使用者。第一個星號表示資料庫名。所以一般來說可以先用root建立一個數據庫,然後把這個庫的所有許可權分配給使用者root1.分配了之後要重新整理一下許可權配置。FLUSH PRIVILEGES
-
建立好之後,mysql預設用的3306埠,所以要開啟一下伺服器的3306埠防火牆。
firewall-cmd --zone=public --add-port=3306/tcp --permanent
,如果提示FirewallD is not running
表示防火牆伺服器沒有啟動,可以按需要啟用與否。然後需要重新載入一下防火牆配置。firewall-cmd --reload
-
本地埠啟用之後,需要設定阿里雲的安全組規則。
-
然後試試是不是可以遠端連上,這裡用dbeaver,跨平臺,安利一下~
-
連線上試試查詢,建表之類的操作,成功。