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

跟著 lanche 學 MySQL (1-3):RPM 安裝、服務驗證、客戶端連接與基礎操作入門

     編輯:MySQL 資料庫相關知識

系列簡介:從零開始的 MySQL 實戰筆記

本系列面向 Linux 初學者,記錄 MySQL 3.22 時代的 RPM 安裝、服務管理、客戶端基礎操作。雖版本久遠,但 **RPM 包依賴、服務腳本、授權表初始化、客戶端連接參數、SQL 基礎語法** 等核心知識點至今通用,是理解現代 MySQL 部署運維的基石。

第一講:RPM 包選擇與安裝

1.1 核心 RPM 包說明

包名用途必要性
MySQL-3.22.xx.i386.rpm服務器核心 (mysqld、系統庫、腳本)✅ 必裝
MySQL-client-3.22.xx.i386.rpm標準客戶端 (mysql、mysqladmin、mysqldump 等)✅ 必裝
MySQL-bench-3.22.xx.i386.rpm基準測試工具 (sql-bench/)可選,性能評估用
MySQL-devel-3.22.xx.i386.rpm頭文件、庫文件 (libmysqlclient.a/.so),編譯 PHP/Perl/Python 驅動需用按需
MySQL-3.22.xx.src.rpm全量源碼 SRPM,重構 RPM 或自定義編譯用開發者/打包者

1.2 最小化安裝命令


rpm -ivh MySQL-3.22.*.rpm MySQL-client-*.rpm

安裝後默認路徑:
二進制:/usr/bin/、/usr/sbin/
配置:/etc/my.cnf
數據:/var/lib/mysql/
日志:/var/log/mysqld.log
啟動腳本:/etc/rc.d/init.d/mysql (或 mysql.server)

第二講:服務驗證與啟停管理

2.1 守護進程檢查


ps -A | grep mysqld
# 或
systemctl status mysqld   # systemd 系統
service mysqld status     # SysVinit 系統

2.2 初始化授權表 (關鍵步驟)


mysql_install_db
# 輸出提示:準備 db 目錄、創建 mysql/test 數據庫、生成 grant 表、設置 root 無密碼

注意:MySQL 5.7+ 使用 mysqld --initialize-insecure --user=mysql,並生成隨機 root 密碼寫入 ~/.mysql_secret。

2.3 手動啟動與驗證


# 啟動 (舊版)
safe_mysqld &      # 後台守護進程模式
# 或
mysqld &           # 直接前台運行 (調試用)

# 驗證
mysqladmin version
# 期望輸出關鍵信息:
# Server version: 3.22.xx
# Protocol version: 10
# TCP port: 3306
# UNIX socket: /tmp/mysql.sock
# Uptime: XX sec
# Threads: 1  Questions: XX  Slow queries: 0  Opens: XX  Flush tables: XX  Open tables: XX

2.4 關閉與重啟測試


mysqladmin -u root shutdown   # 優雅關閉
safe_mysqld &                 # 重啟驗證自啟能力

第三講:客戶端連接與基礎 SQL 操作

3.1 連接語法全解


mysql [-h host] [-u user] [-p[password]] [database]
# 參數詳解:
# -h : 服務器主機名/IP,默認 localhost (走 UNIX socket)
# -u : MySQL 用戶名,非系統用戶,默認當前 Linux 用戶名
# -p : 密碼,-p 後直接跟密碼無空格 (不安全,歷史記錄可見);僅 -p 則交互輸入
# database : 默認使用的數據庫,等同於連接後 USE db

示例:

  • mysql -h localhost -u root -p (推薦,交互輸入密碼)
  • mysql -u user -ppasswd (腳本自動化用,注意無空格)

3.2 交互式客戶端基礎操作


mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |  -- 系統授權庫,核心權限表 user/db/tables_priv/columns_priv/procs_priv
| test     |  -- 測試庫,默認所有人可讀寫,生產環境建議刪除
| tmp      |  -- 臨時庫 (若存在)
+----------+

mysql> USE mysql;
Database changed

mysql> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| user                      |  -- 用戶帳號、密碼哈希、全局權限
| db                        |  -- 數據庫級權限
| tables_priv               |  -- 表級權限
| columns_priv              |  -- 列級權限
| procs_priv                |  -- 存儲過程/函數權限
+---------------------------+

mysql> SELECT Host, User, Password FROM user;
+-----------+------+-------------------------------------------+
| Host      | User | Password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AE0FB6AF20F88B |  -- 4.1+ 雙重 SHA1 哈希
| %         | root | *81F5E21E35407D884A6CD4A731AE0FB6AF20F88B |
+-----------+root@localhost

3.3 SQL 語句規範與輸出格式

  • 語句以 ; 或 \g 結尾
  • 關鍵字不區分大小寫 (show databases; = SHOW DATABASES;)
  • 未輸入結束符按 Enter → 出現 -> 提示符,繼續輸入
  • 結果以 ASCII 表格顯示:列標簽 → 數據行 → 統計行 (N rows in set (X.XX sec))
  • 退出:EXIT、QUIT、\q、Ctrl+D

現代環境對應操作對照表

操作MySQL 3.22 (文中)MySQL 8.0 / MariaDB 10.6 (現代)
安裝RPM 手工dnf install mysql-server / apt install mariadb-server / Docker
初始化mysql_install_dbmysqld --initialize-insecure --user=mysql (首次自動)
啟動safe_mysqld &systemctl start mysqld / systemctl enable mysqld
驗證mysqladmin versionmysqladmin -u root -p version / systemctl status mysqld
連接mysql -u root -p同上,但 root 默認 auth_socket 插件,本地無密碼直連
授權表mysql.user 等 5 表同名表 + global_grants、password_history 等新表
密碼哈希雙重 SHA1 (4.1+)caching_sha2_password (默認) / mysql_native_password

結語

從 rpm -ivh 到 SHOW DATABASES,這三講串起了 MySQL 部署、啟動、連接、探查的最小閉環。現代運維雖已容器化、自動化,但**授權表結構、權限模型、客戶端協議、SQL 語法**的核心邏輯從未改變。建議初學者在虛擬機完整走一遍手工部署流程,再轉向 Ansible/Terraform/Operator 自動化,方知「自動化背後的確定性」。

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