Để tạo user MySQL với tên người dùng và mật khẩu lưu trong biến, sử dụng Dynamic SQL kết hợp PREPARE, EXECUTE, DEALLOCATE PREPARE.
Các bước thực hiện
Bước 1: Khai báo biến
mysql> SET @TenDangNhap := 'John Doe'; mysql> SET @MatKhau := 'John Doe 123456';
Bước 2: Xây dựng câu lệnh động với CONCAT()
mysql> SET @CauLenhTaoUser = CONCAT(
-> 'CREATE USER "', @TenDangNhap, '"@"localhost" IDENTIFIED BY "', @MatKhau, '"'
-> );
Bước 3: Chuẩn bị (PREPARE)
mysql> PREPARE stmt FROM @CauLenhTaoUser;
Bước 4: Thực thi (EXECUTE)
mysql> EXECUTE stmt;
Bước 5: Kiểm tra user đã tạo
mysql> SELECT user, host FROM mysql.user;
Kết quả sẽ chứa John Doe | localhost.
Bước 6: Giải phóng (DEALLOCATE)
mysql> DEALLOCATE PREPARE stmt;
Lưu ý quan trọng:
- Tên user chứa khoảng trắng phải đặt trong dấu ngoặc kép
"..."trong câu lệnh CREATE USER. - Cách này hữu ích khi viết stored procedure tạo user động.
- MySQL 8.0+ khuyến nghị dùng
caching_sha2_passwordplugin mặc định.