# 標準登入(會提示密碼)
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';
systemctl stop mysqldmysqld_safe --skip-grant-tables &mysql -u rootUSE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
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 -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 |
-- 重命名表
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'@'%';
mysqld_safe --skip-networking &(僅本機 socket 連線)。USE mysql;
DELETE FROM user WHERE User = '';
FLUSH PRIVILEGES;
DROP DATABASE test; DELETE FROM db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES;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)。