😊 @ 作者: Eric
💖 @ 主頁: https://blog.csdn.net/weixin_47316183?type=blog
🎉 @ 主題:CentOS7源碼安裝MySQL詳細教程
?? @ 創作時間: 2023年08月014日
文章目錄
- 1、安裝的四種方式
- 2、源碼安裝MySQL詳細步驟
- 2.1、查看是否安裝過MySQL
- 2.2、卸載之前的MySQL(可選)
- 2.3、安裝MySQL
- 1)下載安裝包
- 2)檢查MySQL依賴
- 4)具體安裝過程
- 4)服務的初始化
- 5)啟動MySQL、查看狀態
- 7)MySQL登錄
- 8)修改密碼
- 3、配置MySQL
- 3.1、設置MySQL自啟動
- 3.2、設置允許遠程連接
- 總結
1、安裝的四種方式
安裝方式 | 特點 |
---|---|
rmp | 安裝簡單、靈活性差、無法靈活選擇版本、升級 |
rpm repository | 安裝包極小,版本安裝簡單靈活,升級方便,需要聯網安裝 |
通用二進制包 | 安裝比較復雜,靈活性高,平臺通用性好 |
源碼包 | 安裝最復雜,時間長,參數設置靈活,性能好 |
那么我們這里選擇 源碼包 方式進行安裝,因為性能好同時設置參數靈活
2、源碼安裝MySQL詳細步驟
2.1、查看是否安裝過MySQL
1、如果你是用rpm安裝, 檢查一下RPM PACKAGE:
rpm -qa | grep -i mysql
2、檢查mysql service:
systemctl status mysqld.service
3、如果存在mysql-libs的舊版本包,顯示如下:
如果不存在mysql-lib的版本,顯示如下:
2.2、卸載之前的MySQL(可選)
1、關閉 mysql 服務
systemctl stop mysqld.service
2、查看當前 mysql 安裝狀況
rpm -qa | grep -i mysql
# 或
yum list installed | grep mysql
3、卸載上述命令查詢出的已安裝程序
yum remove mysql-xxx mysql-xxx mysql-xxx mysqk-xxxx
務必卸載干凈,反復執行 rpm -qa | grep -i mysql
確認是否有卸載殘留
4、刪除 mysql 相關文件
# 查找相關文件
find / -name mysql# 刪除上述命令查找出的相關文件
rm -rf xxx
5、刪除 my.cnf
rm -rf /etc/my.cnf
2.3、安裝MySQL
1)下載安裝包
- 下載地址官網:https://www.mysql.com
- 打開官網,找到 DOWNLOADS ,然后點擊 MySQL Community Server
3.選擇 Red Hat Enterprise Linux
4.下載的tar包,用壓縮工具打開
-
解壓后rpm安裝包 (紅框為抽取出來的安裝包)
-
解壓后rpm安裝包 (紅框為抽取出來的安裝包)
這里為了方便我直接把抽取好的npm包放在了網盤:
鏈接:https://pan.baidu.com/s/1RNppZcP_eaG0zDGDZMrIXQ?pwd=Eric
提取碼:Eric
2)檢查MySQL依賴
1、由于MySQL安裝過程中,會通過MySQL用戶在/tmp
目錄下新建tmp_db
文件,所以請給/tmp較大的權限
。執行 :
cd /opt/chmod -R 777 /tmp
2、檢查 libaio 依賴
rpm -qa|grep libaio
如果存在libaio包如下:
3、檢查 net-tools 依賴
rpm -qa|grep net-tools
如果存在 net-tools 包如下:
如果不存在 net-tools 則需要安裝
yum install -y net-tools
4)具體安裝過程
1、將安裝程序拷貝到/opt目錄下
2、在mysql的安裝文件目錄下執行:(必須按照順序執行)
# 1、先切換到 opt目錄
cd /opt# 2、開始按照順序執行安裝命令(必須按照這個順序執行)
rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpmrpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpmrpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
可能報錯1:
一個命令:yum remove mysql-libs
解決,
可能報錯2:
一個命令:yum install -y perl-Module-Install.noarch
解決,
安裝成功后查看MySQL版本
執行如下命令,如果成功表示安裝mysql成功。類似java -version如果打出版本等信息
mysql --version
# 或
mysqladmin --version
執行如下命令,查看是否安裝成功。需要增加 -i 不用去區分大小寫,否則搜索不到。
rpm -qa | grep -i mysql
4)服務的初始化
為了保證數據庫目錄與文件的所有者為 mysql 登錄用戶,如果你是以 root 身份運行 mysql 服務,需要執行下面的命令初始化:
mysqld --initialize --user=mysql
說明: --initialize
選項默認以“安全”
模式來初始化,則會為root
用戶生成一個密碼并將 該密碼標記為過期 ,登錄后你需要設置一個新的密碼。生成的 臨時密碼 會往日志中記錄一份。
查看密碼:
cat /var/log/mysqld.log
root@localhost: 后面就是初始化的密碼
5)啟動MySQL、查看狀態
#加不加.service后綴都可以
啟動:systemctl start mysqld.service關閉:systemctl stop mysqld.service重啟:systemctl restart mysqld.service查看狀態:systemctl status mysqld.service
也可以查看MySQL的進程
7)MySQL登錄
通過 mysql -hlocalhost -P3306 -uroot -p
進行登錄,在Enter password
:錄入初始化密碼
# 1、先查看密碼
cat /var/log/mysqld.log# 2、登錄MySQL
mysql -hlocalhost -P3306 -uroot -p
此時我們登錄試試
登錄成功~
8)修改密碼
- 因為初始化密碼默認是過期的,所以查看數據庫會報錯
- 修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hf$ypXW*xJ^rn&0z';
注意:5.7版本之后(不含5.7),mysql加入了全新的密碼安全機制。設置新密碼太簡單會報錯。
改為更復雜的密碼規則之后,設置成功,可以正常使用數據庫了
3、配置MySQL
3.1、設置MySQL自啟動
先查看MySQL是否自啟動
systemctl list-unit-files | grep mysqld.service
默認是enabled。也就代表是 自啟動
如不是enabled可以運行如下命令設置自啟動
systemctl enable mysqld.service
如果不希望自啟動,運行如下命令設置
systemctl disable mysqld.service
3.2、設置允許遠程連接
1、在Linux系統MySQL下測試:
use mysql;select Host,User from user;
可以看到root用戶的當前主機配置信息為localhost。
2、修改Host
為通配符%
- Host列指定了允許用戶登錄所使用的IP,
- 比如 user=root Host=192.168.1.1。這里的意思就是說root用戶只能通過192.168.1.1的客戶端去訪問。 user=rootHost=localhost,表示只能通過本機客戶端去訪問。
- 而 %是個 通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前綴為“192.168.1.”的客戶端都可以連接。如果 Host=%,表示所有IP都有連接權限。
- 注意:在生產環境下不能為了省事將host設置為%,這樣做會存在安全問題,具體的設置可以根據生產環境的IP進行設置。
update user set host = '%' where user ='root';
Host設置了“%”后便可以允許遠程訪問。
Host修改完成后記得執行flush privileges使配置立即生效:
flush privileges;
如果是 MySQL5.7
版本,接下來就可以使用SQLyog或者Navicat成功連接至MySQL了。
如果是 MySQL8.x
版本,連接時還會出現如下問題:
配置新連接報錯:錯誤號碼 2058,分析是 mysql 密碼加密方法變了。
此時我們需要修改密碼加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Hf$ypXW*xJ^rn&0z';
效果如下
此時我們可以再次連接,會發現還是連接失敗,這個錯誤就比較簡單了,我們只需要關閉防火墻或者開放MySQL端口即可(在這里我把這兩種方式都列出來,大家任意選擇就好)
方式一:關閉防火墻
# 開啟防火墻
systemctl start firewalld.service# 查看防火墻狀態
systemctl status firewalld.service# 關閉防火墻
systemctl stop firewalld.service#設置開機啟用防火墻
systemctl enable firewalld.service#設置開機禁用防火墻
systemctl disable firewalld.service
方式二:開放端口
# 查看開放的端口號
firewall-cmd --list-all# 設置開放的端口號
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=3306/tcp --permanent# 開放端口號后需要重啟防火墻
firewall-cmd --reload
我這里選擇開放端口(如果是云服務器
需要去到控制臺開放安全組端口)
此時我們再次連接,發現終于成功啦~
總結
怎么樣,是不是特別的方便和簡單~