mysql -u root -p
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
mysql -h host -u user -p
前提:伺服器已授權該使用者從該主機連線 (GRANT ... TO user@host)。
| 操作 | 指令 |
|---|---|
| 開啟資料庫 | USE dbname; |
| 顯示所有資料庫 | SHOW DATABASES; |
| 顯示 mysql 庫所有表 | USE mysql; SHOW TABLES; |
| 顯示表結構 | DESCRIBE tbl_name; (如 DESCRIBE user;) |
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
USE mysql;
DELETE FROM user WHERE User='root' AND Host='%';
FLUSH PRIVILEGES;
-- 從 weiqiong.com 連線,存取 bankaccount 庫
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON bankaccount.* TO 'custom'@'weiqiong.com' IDENTIFIED BY 'pass';
-- 重命名表
ALTER TABLE t1 RENAME t2;
-- 修改欄位型別 + 重命名欄位
ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
-- 新增 TIMESTAMP 欄位
ALTER TABLE t2 ADD d TIMESTAMP;
-- 新增索引 + 設定主鍵
ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
-- 刪除欄位
ALTER TABLE t2 DROP COLUMN c;
-- 新增 AUTO_INCREMENT 主鍵欄位 (需索引 + NOT NULL)
ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
-- 刪除符合條件記錄
DELETE FROM t1 WHERE c > 10;
-- 批次更新 (謹慎:無 WHERE 會更新全表)
UPDATE t1 SET user='weiqiong', password='weiqiong' WHERE id=1;
-- 建立前綴索引 (節省空間,加速 LIKE 'prefix%' 查詢)
CREATE INDEX idx_name_prefix ON customer (name(10));
NOT NULL。name(10) 適用於長字串欄位,大幅縮減索引體積。