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

MySQL 常用命令大全:從密碼管理、備份還原到免密登入排查

     編輯:MySQL 資料庫相關知識

連線與認證

# 標準登入(會提示密碼)
mysql -u root -p

# 指定主機/埠
mysql -h 127.0.0.1 -P 3306 -u root -p

# 一行式帶密碼(不安全,僅測試用)
mysql -u root -p'password'

密碼管理

修改密碼

# 方法 1:mysqladmin(舊版通用)
mysqladmin -u root -p'oldpass' password 'newpass'

# 方法 2:SQL 修改 user 表(5.7+ 推薦)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
FLUSH PRIVILEGES;

# 方法 3:SET PASSWORD(8.0+)
SET PASSWORD FOR 'root'@'localhost' = 'newpass';

忘記 root 密碼重置

  1. 停止 MySQL:systemctl stop mysqld
  2. 跳過授權表啟動:mysqld_safe --skip-grant-tables &
  3. 免密登入:mysql -u root
  4. 更新密碼:
    USE mysql;
    UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
    FLUSH PRIVILEGES;
    
  5. 正常重啟:systemctl restart mysqld

服務控制

# systemd(現代 Linux)
systemctl start|stop|restart|status mysqld

# SysVinit(舊版)
service mysqld start|stop|restart
/etc/init.d/mysqld start|stop|restart

# 手動腳本(源碼安裝)
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/mysql/bin/mysqladmin -u root -p shutdown

備份與還原 (mysqldump)

場景命令範例
全庫備份(結構+資料)mysqldump -u root -p dbname > backup.sql
單表備份mysqldump -u root -p dbname table > backup.sql
僅結構(-d / --no-data)mysqldump -u root -p -d dbname > schema.sql
僅資料(-t / --no-create-info)mysqldump -u root -p -t dbname > data.sql
條件導出(--where)mysqldump -u root -p dbname t --where="id>100" > part.sql
壓縮備份mysqldump -u root -p dbname | gzip > backup.sql.gz
還原mysql -u root -p dbname < backup.sql
遠程備份mysqldump -h remote_ip -u root -p dbname | gzip > backup.sql.gz

DDL 常用操作

-- 重命名表
RENAME TABLE old_name TO new_name;

-- 修改欄位屬性
ALTER TABLE t CHANGE old_col new_col VARCHAR(50) NOT NULL;

-- 指定位置新增欄位
ALTER TABLE t ADD new_col DATETIME NOT NULL AFTER exist_col;

-- 新增索引
CREATE INDEX idx_name ON t(col);
ALTER TABLE t ADD INDEX idx_name(col);

-- 刪除索引
DROP INDEX idx_name ON t;

用戶與權限管理

-- 建立用戶並授權(8.0+)
CREATE USER 'app'@'%' IDENTIFIED BY 'strongpass';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'%';
FLUSH PRIVILEGES;

-- 僅本機連線
CREATE USER 'local'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL ON mydb.* TO 'local'@'localhost';

-- 查看權限
SHOW GRANTS FOR 'app'@'%';

-- 回收權限
REVOKE DELETE ON mydb.* FROM 'app'@'%';

-- 刪除用戶
DROP USER 'app'@'%';

安全加固

  1. 禁用網路: mysqld_safe --skip-networking &(僅本機 socket 連線)。
  2. 刪除匿名用戶:
    USE mysql;
    DELETE FROM user WHERE User = '';
    FLUSH PRIVILEGES;
    
  3. 移除 test 資料庫: DROP DATABASE test; DELETE FROM db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES;
  4. 執行 mysql_secure_installation 互動式加固腳本。

資料匯入大檔案技巧

# 進入 mysql 客戶端後
SOURCE /path/to/backup.sql;

# 或命令列
mysql -u root -p dbname < /path/to/backup.sql

總結

本文整理了 MySQL 日常運維 90% 會用到的命令:連線、密碼、服務、備份還原、DDL、權限、安全。建議收藏備查,並根據版本(5.7/8.0)選擇對應語法(PASSWORD() 在 8.0 已移除,改用 ALTER USER)。

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