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

Ubuntu 下 MySQL 安裝配置全攻略:從啟動驗證到遠程訪問與常用操作

     編輯:MySQL 資料庫相關知識

安裝後驗證服務狀態

sudo netstat -tap | grep mysql
# 輸出含 LISTEN 即啟動成功
# tcp  0  0 localhost:mysql  *:*  LISTEN  1321/mysqld

若未啟動:sudo systemctl restart mysql(Ubuntu 16.04+)或 sudo /etc/init.d/mysql restart。

首次登錄與修改 Root 密碼

mysql -u root -p
# 輸入安裝時設置的密碼

-- 修改密碼(5.7+ 推薦)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_pass';
FLUSH PRIVILEGES;

創建業務庫與應用賬號(最小權限原則)

-- 創建庫
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 唯讀賬號
CREATE USER 'app_read'@'%' IDENTIFIED BY 'read_pass';
GRANT SELECT ON app_db.* TO 'app_read'@'%';

-- 讀寫賬號
CREATE USER 'app_rw'@'%' IDENTIFIED BY 'rw_pass';
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_rw'@'%';

-- DDL 賬號(遷腳本用)
CREATE USER 'app_ddl'@'10.0.%.%' IDENTIFIED BY 'ddl_pass';
GRANT CREATE, ALTER, DROP, INDEX ON app_db.* TO 'app_ddl'@'10.0.%.%';

FLUSH PRIVILEGES;

開啟遠程訪問(兩步走)

  1. 授權主機通配符:GRANT ... TO 'user'@'%' ...(上文已示例)。
  2. 修改綁定地址:
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    # 找到 bind-address = 127.0.0.1
    # 改為 bind-address = 0.0.0.0  (監聽所有網卡)
    # 或具體內網 IP:bind-address = 192.168.1.100
    sudo systemctl restart mysql
  3. 防火牆放行 3306:
    sudo ufw allow from 10.0.0.0/8 to any port 3306  # 僅內網段
    # 或
    sudo iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/8 -j ACCEPT

服務管理常用命令

sudo systemctl start mysqlsudo systemctl stop mysqlsudo systemctl restart mysqlsudo systemctl status mysqlsudo systemctl enable mysql
操作systemd (Ubuntu 16.04+)SysVinit (舊版)
啟動sudo /etc/init.d/mysql start
停止sudo /etc/init.d/mysql stop
重啟sudo /etc/init.d/mysql restart
狀態sudo /etc/init.d/mysql status
開機自啟sudo update-rc.d mysql defaults

MySQL 客戶端高頻操作速查表

-- 登錄
mysql -u root -p
mysql -h 192.168.1.100 -u app_rw -p

-- 庫操作
SHOW DATABASES;
USE app_db;
CREATE DATABASE new_db CHARSET utf8mb4;
DROP DATABASE old_db;

-- 表操作
SHOW TABLES;
DESC users;           -- 或 SHOW COLUMNS FROM users;
CREATE TABLE logs (id BIGINT PRIMARY KEY AUTO_INCREMENT, msg TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB;
DROP TABLE tmp_data;
TRUNCATE TABLE cache_data;

-- 數據操作
SELECT * FROM users LIMIT 10;
INSERT INTO users (name, email) VALUES ('Tom', 'tom@example.com');
UPDATE users SET status=1 WHERE id=100;
DELETE FROM users WHERE last_login < '2023-01-01';

-- 狀態檢查
STATUS;               -- 連線資訊、版本、字符集、運行時間
SHOW PROCESSLIST;     -- 當前線程
SHOW ENGINE INNODB STATUS\G  -- InnoDB 內部狀態

安全加固清單(上線必做)

  1. 刪除匿名用戶:DELETE FROM mysql.user WHERE User='';
  2. 禁止 Root 遠程登錄:DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
  3. 刪除測試庫:DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
  4. 啟用 validate_password 插件強制密碼複雜度。
  5. 配置 max_connect_errors=100000 防暴力破解鎖定 Host。
  6. 定期 FLUSH PRIVILEGES; 同步權限快取。

總結

Ubuntu 上 MySQL 從安裝到生產就緒,核心在於 字符集統一 utf8mb4、賬號最小權限、bind-address 開放內網、防火牆精準放行、安全基線加固。掌握上述命令與配置,足以應對 90% 的應用部署場景。

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