1. Hệ quản trị cơ sở dữ liệu
Quản lý truy cập
Dư Phương Hạnh
Bộ môn Hệ thống thông tin
Khoa CNTT, trường Đại học Công nghệ
Đại học Quốc gia Hanoi
hanhdp@vnu.edu.vn
2. 2 bước quản lý truy cập
Authentication (định danh): Tại mức đầu tiên này,
người sử dụng được định danh xem có quyền truy
cập tới MySQL server
Authorization (định quyền): Xem tiến trình người
dùng có quyền thích hợp để thực thi truy vấn
2
Hệ quản trị CSDL @ BM HTTT
3. Lệnh tạo người dùng
CREATE USER user [IDENTIFIED BY
[PASSWORD] 'password'] [, user
[IDENTIFIED BY [PASSWORD] 'password']]
...
Ví dụ:
– CREATE USER demo@localhost IDENTIFIED BY
‘demo';
– Câu lệnh trên sẽ tạo người dùng demo, kết nối tới DB từ
localhost
– Nếu cho phép user kết nối từ bất cứ địa chỉ nào, sử dụng
%
3
Hệ quản trị CSDL @ BM HTTT
4. Gán đặc quyền cho người dùng
GRANT ALL ON classicmodels.* TO demo
[WITH GRANT OPTION ];
GRANT SELECT ON classicmodels.products
TO guest;
WITH GRANT OPTION:
người dùng có quyền gán quyền
đó cho người dùng khác
Hiển thị các quyền được gán cho người dùng
– SHOW GRANTS FOR username;
4
Hệ quản trị CSDL @ BM HTTT
5. Các mức đặc quyền và
Nơi MySQL lưu thông tin truy
cập
Phạm vi
Sử dụng
Global
user
MySQL sử dụng bảng này để chấp nhận hoặc từ
chối kết nối bởi một yêu cầu
Database
Db
MySQL sử dụng bảng này để quyết định DB mà
người dùng có thể truy cập
Table
tables_priv
Chứa các đặc quyền ở mức bảng
Column
columns_priv
Chức các đặc quyền ở mức cột
Routine
5
Bảng
procs_priv
Chứa đặc quyền liên quan đến hàm và thủ tục
Hệ quản trị CSDL @ BM HTTT
6. Quá trình xác định quyền
Để xác định người sử dụng có thể thực hiện một
yêu cầu, MySQL nhìn các đặc quyền ở mức cao
nhất trước (Global)
Nếu quyền yêu cầu không được gán ở mức này,
MySQL sẽ nhìn các cho phép ở mức tiếp theo phía
dưới
Nếu đặc quyền được tìm thấy ở bất cứ mức nào,
yêu cầu sẽ được cho phép
6
Hệ quản trị CSDL @ BM HTTT
7. Ví dụ Bảng user
Cột
Nullable
Giá trị ngầm định
Host
char(60) binary
No
No default
User
char(16) binary
No
No default
Password
char(41) binary
No
No default
Select_priv
Insert_priv
Update_priv
...
Grant_priv
...
Create_routine_priv
...
Trigger_priv
7
Kiểu dữ liệu
enum('N','Y')
No
N
Hệ quản trị CSDL @ BM HTTT
8. Xóa người dùng-Loại bỏ đặc quyền
DROP USER user [, user]...
REVOKE ALL privileges ON classicmodels.* FROM
demo;
8
Hệ quản trị CSDL @ BM HTTT
9. Khi bảng gán quyền được cập nhật?
Các bảng gán quyền (grant) trong bộ nhớ được cập
nhật khi:
– Sau lệnh GRANT, REVOKE, CREATE USER, hoặc
DROP USER
– Sau lệnh FLUSH PRIVILEGES
9
Hệ quản trị CSDL @ BM HTTT
10. Tài khoản MySQL
Bảng mysql.user chứa các tài khoản người sử
dụng và các quyền truy cập
Để kiểm tra các tài khoản và xem mật khẩu có trống
không
mysql> SELECT User, Host, Password FROM mysql.user;
(Chú ý: cần đăng nhập root tới MySQL server trước, sử dụng lệnh
shell> mysql -h 127.0.0.1 -u root -p
Enter password: ** )
10
Hệ quản trị CSDL @ BM HTTT
11. Sửa đổi tài khoản MySQL
Có 3 cách thiết lập tài khoản root
– Sử dụng câu lệnh SET PASSWORD
– Sử dụng câu lệnh UPDATE
– Sử dụng chương trình khách mysqladmin
11
Hệ quản trị CSDL @ BM HTTT
12. Sửa đổi tài khoản MySQL
1. mysql> SET PASSWORD FOR 'root'@'localhost' =
PASSWORD('newpwd');
2. mysql> SET PASSWORD FOR 'root'@'127.0.0.1' =
PASSWORD('newpwd');
3. mysql> UPDATE mysql.user SET Password =
PASSWORD('newpwd') WHERE User = 'root';
Nếu sử dụng lệnh update cần thực hiện thêm lệnh
sau:
mysql> FLUSH PRIVILEGES;
Với lệnh FLUSH server sẽ đọc lại các bảng phân quyền
12
Mật khẩu được mã hóa sử dụng hàm PASSWORD()
Hệ quản trị CSDL @ BM HTTT
13. Tài liệu tham khảo
http://www.mysql.com
http://dev.mysql.com/doc/refman/5.5/en/
http://www.mysqltutorial.org/mysqladministration.aspx
13
Hệ quản trị CSDL @ BM HTTT