-- 查看伺服器實際運行參數
SHOW VARIABLES;
-- 查看使用者權限
SHOW GRANTS FOR 'root'@'localhost';
-- 刪除已存在
DROP PROCEDURE IF EXISTS helloword;
-- 變更分隔符,避免 ; 衝突
DELIMITER //
CREATE PROCEDURE helloword()
BEGIN
SELECT 'hello world';
END //
DELIMITER ;
-- 呼叫
CALL helloword();
DROP PROCEDURE IF EXISTS pr_add;
DELIMITER //
CREATE PROCEDURE pr_add(IN a INT, IN b INT)
BEGIN
IF a IS NULL THEN
SET a = 0;
END IF;
SELECT a + b AS result;
END //
DELIMITER ;
CALL pr_add(NULL, 1); -- 結果: 1
-- 建立視圖
CREATE VIEW v_user_active AS
SELECT id, username, email FROM users WHERE status = 1;
-- 使用視圖
SELECT * FROM v_user_active;
DELIMITER //
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
-- 觸發邏輯
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER trg_user_audit_insert
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO audit_log (table_name, action, record_id, created_at)
VALUES ('users', 'INSERT', NEW.id, NOW());
END //
DELIMITER ;
NEW 代表新資料行,OLD 代表舊資料行(UPDATE/DELETE 可用)。
| 權限 | 說明 |
|---|---|
| SELECT | 查詢資料 |
| INSERT | 新增資料 |
| UPDATE | 修改資料 |
| DELETE | 刪除資料 |
| CREATE | 建立資料庫/資料表 |
| DROP | 刪除資料庫/資料表 |
| INDEX | 建立/刪除索引 |
| ALTER | 修改表結構 |
| GRANT OPTION | 授權給他人 |
| ALL PRIVILEGES | 所有權限(除 GRANT OPTION) |
-- 建立使用者並授權(僅限本地連線)
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'localhost';
-- 允許遠端連線(生產環境請限制 IP)
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'192.168.1.%';
-- 撤銷特定權限
REVOKE INSERT ON mydb.* FROM 'app_user'@'localhost';
-- 修改密碼 (MySQL 5.7+)
ALTER USER 'app_user'@'localhost' IDENTIFIED BY 'new_password';
-- 刷新權限生效
FLUSH PRIVILEGES;
-- 刪除使用者
DROP USER 'app_user'@'localhost';
systemctl stop mysqld--skip-grant-tables 啟動:mysqld_safe --skip-grant-tables &mysql -u rootFLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';CREATE ROLE,便於批次管理權限