首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 原始碼安裝與遠程訪問配置完整指南

     編輯:MySQL 資料庫相關知識

前言

官方提供的 MySQL RPM 包僅支援 root 用戶安裝,且不支持目錄重定向(relocate)。若需自定義安裝路徑,建議採用原始碼編譯安裝方式。本文記錄從原始碼編譯、初始化數據目錄、啟動服務到配置遠程訪問權限的完整流程。

一、原始碼編譯安裝

1. 配置編譯參數

./configure --prefix=/home/chenlei/usr/MySQL

指定安裝前綴為 /home/chenlei/usr/MySQL,後續所有文件將部署在該目錄下。

2. 初始化數據目錄

./mysql_install_db --defaults-file=../share/MySQL/my-small.cnf --user=chenlei

執行後,在 /home/chenlei/usr/MySQL/var 目錄下生成以下核心文件:

  • ibdata1:InnoDB 共享表空間數據文件
  • ib_logfile0 / ib_logfile1:InnoDB 重做日誌文件
  • mysql / test:系統默認創建的兩個數據庫
  • 主機名.err:錯誤日誌文件

3. 啟動 MySQL 服務

./mysqld_safe --defaults-file=../share/MySQL/my-small.cnf --user=chenlei &

使用 mysqld_safe 腳本安全啟動服務,& 使其在後台運行。

二、配置遠程訪問權限

1. 登錄本地 root 賬號

./mysql -uroot

2. 創建遠程用戶並授權

以下示例創建用戶 chenlei,允許從任意主機(%)訪問所有數據庫:

GRANT ALL PRIVILEGES ON *.* TO 'chenlei'@'%' IDENTIFIED BY 'password';

參數解析:

  • ALL PRIVILEGES:授予所有權限,亦可指定具體權限如 SELECT, INSERT, UPDATE
  • *.*:針對所有數據庫的所有表;db_name.* 針對特定庫;db_name.table_name 針對特定表
  • 'chenlei'@'%':用戶名與主機限制,% 表示任意 IP;若限定 IP 則填具體地址如 '192.168.1.100'
  • IDENTIFIED BY 'password':設定用戶密碼

3. 刷新權限生效

FLUSH PRIVILEGES;

三、開啟遠程登錄的兩大關鍵步驟

1. 防火牆放行 3306 端口

MySQL 默認監聽 3306 端口。必須確保服務器防火牆(iptables、firewalld 或雲廠商安全組)未阻擋該端口。若安裝時指定了非默認端口,請相應開放對應端口。

2. 創建允許遠程連接的用戶並授權

以 root 登錄後,執行授權語句。示例:授權用戶 ted 從 IP 123.123.123.123 訪問 discuz 數據庫:

GRANT ALL PRIVILEGES ON discuz.* TO 'ted'@'123.123.123.123' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

若需允許任意 IP 訪問,將主機部分改為 '%' 即可。

四、常見問題排查

  • 連接被拒:檢查防火牆、MySQL bind-address 配置(需設為 0.0.0.0 或具體內網 IP)、用戶主機匹配規則。
  • 權限不生效:確認已執行 FLUSH PRIVILEGES;MySQL 8.0+ 採用動態權限,通常無需刷新,但舊版本必須執行。
  • 密碼策略報錯:MySQL 5.7+ 默認啟用 validate_password 插件,需滿足長度、大小寫、特殊字符要求,或調整 validate_password.policy 級別。

總結

原始碼安裝賦予了部署路徑的完全控制權,配合 --defaults-file 指定配置文件,可實現多實例並行。遠程訪問核心在於「防火牆放行端口」與「用戶主機授權匹配」兩大條件缺一不可。生產環境建議遵循最小權限原則,僅授權必要的數據庫、表與來源 IP,並強制使用強密碼與 SSL 加密連接。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved