Linux 下 MySQL 8 搭建教程

一、下載

你可以從 MySQL 官方下載地址 下載所需的 MySQL 安裝包。

image-20250314104819877

image-20250314104850599

二、環境準備

1. 查看 MySQL 是否存在

使用以下命令查看系統中是否已經安裝了 MySQL:

rpm -qa|grep -i mysql

2. 清空 /etc/ 目錄下的 my.cnf

執行以下命令刪除 my.cnf 文件:

[root@localhost ~]# rm -rf /etc/my.cnf

3. 刪除 mariadb

使用 yum 命令刪除 mariadb:

[root@localhost ~]# yum -y remove mariadb

4. 清空帶有 mysql 的所有文件

使用 find 命令查找并刪除所有包含 mysql 的文件:

[root@localhost ~]# find / -name "*mysql*" -exec rm -rf {} \;

5. 檢查并安裝依賴庫

查看是否安裝了 MySQL 依賴庫 libaio,如果沒有安裝則進行安裝:

[root@localhost ~]# yum list installed |grep libaio
libaio.x86_64                         0.3.109-13.el7                   @anaconda

若未安裝,執行以下命令安裝:

yum -y install libaio

6. 解壓 MySQL 壓縮包并更名

解壓 MySQL 壓縮包:

tar xvJf mysql-8.0.41-linux-glibc2.17-x86_64.tar.xz

附注:tar 命令參數解釋:

  • -x:解開已有的歸檔文件
  • -v:顯示詳細的過程
  • -J:使用 xz 壓縮或解壓歸檔文件
  • -f:指定歸檔文件名

重命名解壓后的文件夾:

mv mysql-8.0.41-linux-glibc2.17-x86_64 mysql-8.0.41

7. 移動項目文件

將解壓并重命名后的 MySQL 文件夾移動到 /usr/local/mysql/ 目錄下:

[root@localhost ~]# cp -r mysql-8.0.41 /usr/local/mysql/mysql-8.0.411

8. 創建 mysql 組和用戶

為了滿足生產環境服務器對 root 用戶的限制,需要創建 mysql 組和用戶:

# 創建 mysql 組
groupadd mysql
# 創建 mysql 用戶
useradd -g mysql mysql

示例:

[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# id mysql
uid=997(mysql) gid=995(mysql)=995(mysql)

創建一個文件:

[root@localhost ~]# mkdir /usr/local/mysql/mysql-8.0.411/mysql-files

修改權限:

[root@localhost ~]# chown mysql:mysql /usr/local/mysql/mysql-8.0.411/mysql-files
[root@localhost ~]# chmod 750 /usr/local/mysql/mysql-8.0.411/mysql-files/

給解壓的 MySQL 文件夾及創建的 data 文件夾修改用戶及用戶組權限:

chown -R mysql:mysql /usr/local/soft/mysql/

三、設置 MySQL 配置文件 my.cnf

使用 vim 編輯器打開并編輯 /etc/my.cnf 文件:

[root@chen mysql]# vim /etc/my.cnf

配置內容如下:

[mysqld]
# 設置 MySQL 服務監聽端口,默認 3306
port=3306
# 設置 MySQL 服務器綁定的 IP 地址,可以設置為自己本機 IP
bind-address=0.0.0.0
# 設置 MySQL 數據庫用戶
user=mysql
# 數據庫文件路徑
basedir=/usr/local/mysql/mysql-8.0.41
# 數據庫數據目錄,存儲數據庫文件的路徑
datadir=/usr/local/mysql/mysql-8.0.41/data
# 設置 MySQL 服務器使用的套接字文件路徑
socket=/usr/local/mysql/mysql-8.0.41/mysql.sock
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# 設置每個連接的默認字符集
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
lower_case_table_names = 1
# 配置 MySQL 的自動擴展參數
innodb_autoextend_increment=64
log-error=/usr/local/mysql/mysql-8.0.41/logs/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.41/mysql.pid[mysqld_safe]
# 設置指定存放進程 ID 的文件
log-error=/usr/local/mysql/mysql-8.0.4/logs/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.4/mysql.pid
# log-error=/var/log/mariadb/mariadb.log
# pid-file=/var/run/mariadb/mariadb.pid
[client]
socket = /usr/local/mysql/mysql-8.0.4/mysql.sock
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

四、Mysql 初始化

Linux 中的 MySQL 默認是區分表名大小寫的,如果你安裝的是 MySQL 8,需要在數據庫初始化時設置不區分大小寫,否則初始化后在配置文件中設置并重啟時會報錯。

使用 mysqlbin 下面的 mysqld 腳本進行初始化:

/usr/local/mysql/mysql-8.0.41
/bin/mysqld --defaults-file=/usr/local/soft/mysql/my.cnf --user=mysql --basedir=/usr/local/mysql/mysql-8.0.41 --datadir=/usr/local/soft/mysql/data --lower-case-table-names=1 --initialize

示例:

[root@localhost ~]# /usr/local/mysql/mysql-8.0.4/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-8.0.4/mysql-8.0.40
2024-08-05T02:12:23.829793Z 0 [System] [MY-013169] [Server] /usr/local/mysql/mysql-8.0.4/bin/mysqld (mysqld 8.0.33) initializing of server in progress as process 3849
2024-08-05T02:12:23.841538Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-05T02:12:24.709625Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-05T02:12:25.810204Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: v,es=69BKU25

判斷是否初始化成功

[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.4/

出現 data 表示初始化成功。

設置 ssl 安全加密連接

[root@localhost ~]# cd /usr/local/mysql/mysql-8.0.41/
[root@localhost mysql]# ls ./bin/*ssl*
./bin/mysql_ssl_rsa_setup
[root@localhost mysql]# ./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/mysql-8.0.4/data
[root@localhost mysql]# ls ./data/
auto.cnf         #ib_16384_0.dblwr  #innodb_temp        public_key.pem   undo_002
ca-key.pem       #ib_16384_1.dblwr  mysql               server-cert.pem
ca.pem           ib_buffer_pool     mysql.ibd           server-key.pem
client-cert.pem  ibdata1            performance_schema  sys
client-key.pem   #innodb_redo       private_key.pem     undo_001

其他配置

[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.41/support-files
mysqld_multi.server  mysql-log-rotate  mysql.server

五、啟動并登錄 MySQL,設置 MySQL 開機自啟動

加入到系統服務并啟動 mysql

cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/init.d/mysql

修改 mysql 自啟服務配置

vim /etc/init.d/mysql

啟動服務

service mysql start

登錄 mysql

/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

登錄成功后會提示你重置密碼,修改密碼:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'uacsapp';
FLUSH PRIVILEGES;      # 刷新 

退出:

quit

重啟服務:

service mysql restart

再次登陸:

/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

輸入剛修改的密碼,按回車鍵。到此,MySQL 已經安裝完成。

環境路徑配置

[root@localhost ~]# vim /etc/profile

在文件中添加以下內容:

export PATH=$PATH:/usr/local/mysql/mysql-8.0.4/

使配置生效:

[root@localhost ~]# source /etc/profile

設置開機自啟動(方法一)

添加服務列表的方式,放置到 /etc/rc.d/init.d 中:

# copy 并重命名
cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/rc.d/init.d/mysql
# 復制成功后我們需要給賦予權限
chmod +x /etc/init.d/mysql
# 添加為服務:
chkconfig --add mysql
# 查看服務列表 
chkconfig --list

看到 mysql 服務的 3、4、5 狀態為開或者為 on 則表示成功。如果是關或者 off 則執行以下命令:

chkconfig --level 345 mysqld on

重啟計算機:

reboot

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898033.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898033.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898033.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Go】函數閉包、堆和棧的概念

閉包 閉包機制解析 在函數式編程中,閉包(Closure) 是一種特殊的函數結構,其核心特性是能夠捕獲并持有外部函數的上下文環境變量。這一機制打破了傳統函數中局部變量的生命周期規則: 常規局部變量 在函數被調用時創建…

【源碼分析】Nacos服務注冊源碼分析-客戶端

Nacos客戶端入口 首先在我們使用Nacos時&#xff0c;會在客戶端引入對應的依賴&#xff0c;例如需要Nacos的注冊中心功能需要引入 <!--nacos-discovery 注冊中心依賴--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-c…

Java中關于Optional的 orElse 操作,以及 orElse 與 orElseGet 的區別

文章目錄 1. 大概說明2. 詳細分析2.1 .orElse 操作2.2 .orElse 的作用&#xff1a;避免空指針異常2.3 為什么要用&#xff1f;2.4 orElseGet如何使用2.5 orElse和orElseGet的區別 1. 大概說明 這篇文章的目的是為了說明&#xff1a; orElse 如何使用orElseGet 如何使用兩者的…

數據結構-樹(詳解)

目錄 一、樹的基本概念二、樹的節點結構三、樹的基本操作&#xff08;一&#xff09;插入操作&#xff08;二&#xff09;刪除操作&#xff08;三&#xff09;查找操作&#xff08;四&#xff09;遍歷操作 四、樹的實現五、總結 一、樹的基本概念 樹是一種非線性數據結構&…

【eNSP實戰】配置端口映射(NAT Server)

拓圖 要求&#xff1a; 將AR1上的GE 0/0/1接口的地址從TCP協議的80端口映射到內網 Web服務器80端口 AR1接口配置 interface GigabitEthernet0/0/0ip address 192.168.0.1 255.255.255.0 # interface GigabitEthernet0/0/1ip address 11.0.1.1 255.255.255.0 # ip route-s…

RabbitMQ 基本原理詳解

1. 引言 在現代分布式系統中&#xff0c;消息隊列&#xff08;Message Queue&#xff09;是實現異步通信、解耦系統組件、提高系統可靠性和擴展性的重要工具。RabbitMQ 作為一款開源的消息中間件&#xff0c;因其高性能、易用性和豐富的功能&#xff0c;被廣泛應用于各種場景。…

算法——層序遍歷和中序遍歷構造二叉樹

晴問 #include <iostream> #include <vector> #include <queue> #include <unordered_map>using namespace std;struct TreeNode {int data;TreeNode *left;TreeNode *right;TreeNode(int data) : data(data), left(nullptr), right(nullptr) {} };//…

prometheus自定義監控(pushgateway和blackbox)和遠端存儲VictoriaMetrics

1 pushgateway采集 1.1 自定義采集鍵值 如果自定義采集需求時&#xff0c;就可以通過寫腳本 定時任務定期發送數據到 pushgateway 達到自定義監控 1.部署 pushgateway&#xff0c;以 10.0.0.42 節點為例 1.下載組件 wget https://github.com/prometheus/pushgateway/relea…

feign配置重試次數不生效

一、問題產生 自定義重試次數&#xff0c;實現如下 ConditionalOnProperty(prefix "feign.client", name "enable", havingValue "true") Configuration public class FeignConfig {Beanpublic FeignInterceptor feignInterceptor() {retur…

Dify使用部署與應用實踐

最近在研究AI Agent&#xff0c;發現大家都在用Dify&#xff0c;但Dify部署起來總是面臨各種問題&#xff0c;而且我在部署和應用測試過程中也都遇到了&#xff0c;因此記錄如下&#xff0c;供大家參考。Dify總體來說比較靈活&#xff0c;擴展性比較強&#xff0c;適合基于它做…

二叉樹的統一迭代法 標記法

我們以中序遍歷為例&#xff0c;在二叉樹&#xff1a;聽說遞歸能做的&#xff0c;棧也能做&#xff01; (opens new window)中提到說使用棧的話&#xff0c;無法同時解決訪問節點&#xff08;遍歷節點&#xff09;和處理節點&#xff08;將元素放進結果集&#xff09;不一致的情…

BaseActivity 和 BaseFragment 的現代化架構:ViewBinding 與 ViewModel 的深度整合

BaseActivity 和 BaseFragment 實現&#xff0c;集成了 View Binding&#xff0c;并增加了對 Lifecycle 和 ViewModel 的支持&#xff0c;同時進一步簡化了代碼結構&#xff0c;使其更易用、更靈活。 啟用 View Binding 確保在 build.gradle 中啟用了 View Binding&#xff1a…

從零開始學習機器人---如何高效學習機械原理

如何高效學習機械原理 1. 理解課程的核心概念2. 結合圖形和模型學習3. 掌握公式和計算方法4. 理論與實踐相結合5. 總結和復習6. 保持好奇心和探索精神 總結 機械原理是一門理論性和實踐性都很強的課程&#xff0c;涉及到機械系統的運動、動力傳遞、機構設計等內容。快速學習機械…

剖析sentinel的限流和熔斷

sentinel的限流和熔斷 前言源碼分析滑動窗口源碼限流源碼熔斷源碼 完結撒花&#xff0c;sentinel源碼還是挺簡單的&#xff0c;如有需要收藏的看官&#xff0c;順便也用發財的小手點點贊哈&#xff0c;如有錯漏&#xff0c;也歡迎各位在評論區評論&#xff01; 前言 平時發起一…

硬盤分區誤刪后的數據救贖

一、硬盤分區誤刪的概述 硬盤分區誤刪&#xff0c;是許多電腦用戶在使用過程中可能遭遇的棘手問題。分區&#xff0c;作為硬盤上存儲數據的邏輯單元&#xff0c;一旦被誤刪除&#xff0c;不僅會導致該分區內的所有數據瞬間消失&#xff0c;還可能影響到整個硬盤的存儲結構和數…

代碼隨想錄算法訓練營第三十五天(20250303) |01背包問題 二維,01背包問題 一維,416. 分割等和子集 -[補卡20250316]

01背包問題 二維 鏈接 遍歷物品沒有大小順序要求重點是模擬&#xff0c;推導出遞推公式 #include <iostream> #include <vector>int main(){int m, n;std::cin>>m>>n;std::vector<int> weight(m,0),value(m,0);for(int i{0}; i<m; i){std:…

老牌軟件,方便處理圖片,量大管飽。

今天介紹的圖片查看器名字是&#xff1a;FastStone Image Viewer&#xff0c;是一款可查看、編輯、批量重命名、批量轉換的圖片查看軟件。文末有分享鏈接。 軟件以資源管理器的方式管理你電腦里的圖片&#xff0c;點擊左側可選擇文件夾&#xff0c;右邊可預覽圖片。 軟妹用得最…

【數據庫相關】mysql數據庫巡檢

mysql數據庫巡檢 巡檢步驟**一、基礎狀態檢查****二、服務器資源監控****CPU使用****內存使用****磁盤I/O****網絡流量** **三、數據庫內部健康度****全局狀態****慢查詢監控****鎖與并發** **四、存儲引擎健康****InnoDB引擎****MyISAM引擎** **五、日志與備份****六、安全與權…

Python進階編程總結

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;…

Redis復制(replica)主從模式

Redis主從復制 Redis 的復制&#xff08;replication&#xff09;功能允許用戶根據一個 Redis 服務器來創建任意多個該服務器的復制品&#xff0c;其中被復制的服務器為主服務器&#xff08;master&#xff09;&#xff0c;而通過復制創建出來的服務器復制品則為從服務器&#…