Quản Lý MySQL Server
Sử Dụng
Lệnh Trên Console
- Giới thiệu
- Kết nối vào MySQL Server từ dòng lệnh
- Chọn CSDL để làm việc
- Hiển thị thông tin về table
- Tạo CSDL và user account
Giới thiệu
Bạn đang quản lý 1 server MySQL, nếu có 1 chương trình giao diện đồ hoạ để giúp
bạn quản trị hệ thống CSDL nữa thì quá tuyệt vời. Tuy nhiên, trong thực tế có
nhiều lúc bạn chỉ có thể truy cập được vào server qua 1 cửa sổ lệnh đen xì với
con trỏ nhấp nháy. Những lý như thế này mà không có vài "chiêu" gõ lệnh command
line đời có khi "đen tối" ;-)
Bài viết này sẽ giới thiệu vài lệnh SQL cần thiết nhất để quản trị một MySQL
Server.
Kết nối vào MySQL Server từ
dòng lệnh
Để kết nối vào MySQL server, bạn hãy chạy lệnh mysql (file mysql.exe
trong thư mục Bin của MySQL trên Windows hoặc file mysql trong thư mục
bin của MySQL trên Linux). Đây là một MySQL Client với giao diện text, giao tiếp
với người dùng qua dòng lệnh (command line).
mysql -h 192.168.0.1 -u test -ptest test_db
Câu lệnh trên sẽ kết nối vào MySQL Server ở địa chỉ 192.168.0.1 với
username là test, mật mã là test và sử dụng CSDL có tên là
test_db. Nếu không có tham số -h 192.168.0.1, mysql sẽ mặc định kết
nối vào server localhost.
Nếu bạn không muốn cung cấp mật mã trong câu lệnh kết nối thì bạn chỉ cần
cung cấp tham số -p, mysql sẽ nhắc bạn nhập vào mật mã sau. VD:
mysql -h localhost -u myuser -p mydb
Nếu bạn không cung cấp tên của CSDL cần sử dụng, thì mặc định sau khi kết nối
sẽ không có CSDL nào được mở ra để bạn sử dụng cả. VD:
mysql -u root -p
Sau khi kết nối thành công, để thoát khoải chế độ dòng lệnh của mysql và trở
về hệ điều hành, bạn có thể nhấn Ctrl-C, hoặc \q và Enter.
Lưu ý: Đa phần các lệnh về quản trị MySQL server đòi hỏi bạn phải
login vào server với account có quyền cao nhất (vd account root).
Chọn CSDL để làm việc
Sau khi kết nối thành công vào MySQL Server,
bạn có thể chọn hoặc CSDL để làm việc bằng câu lệnh USE tên_CSDL:
USE mysql;
(cuối câu lệnh SQL bạn nhớ thêm dấu chấm phảy ;)
Bạn cũng có thể liệt kê danh sách các CSDL trong hệ thống bằng lệnh:
SHOW DATABASES;
bạn có thể nhận được kết quả tương tự như sau:
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (1.20 sec)
Tài liệu tham khảo:
- Cú pháp lệnh USE của MySQL:
http://dev.mysql.com/doc/mysql/en/USE.html. - Cú pháp lệnh SHOW DATABASES
http://dev.mysql.com/doc/mysql/en/SHOW_DATABASES.html.
table
Sau khi kết nối và chọn CSDL để làm việc xong, bạn có thể liệt kê danh sách các
table trong CSDL bằng lệnh:
SHOW TABLES;
bạn có thể nhận được kết quả tương tự như sau:
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv
|
|
db
|
|
func
|
| help_category
|
| help_keyword
|
| help_relation
|
| help_topic
|
|
host
|
| tables_priv
|
| time_zone
|
| time_zone_leap_second |
| time_zone_name
|
| time_zone_transition |
| time_zone_transition_type |
|
user
|
+---------------------------+
15 rows in set (0.58 sec)
Bạn cũng có thể liệt kê thông tin chi tiết về table bằng lệnh SHOW TABLE
STATUS.
- Lệnh
SHOW TABLE STATUS;
không tham số sẽ liệt kê
thông tin về tất cả các table có trong CSDL hiện tại. - Lệnh
SHOW TABLE STATUS FROM db_name;
sẽ liệt kê
thông tin về tất cả các table trong CSDL có tên là db_name. - Lệnh
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
sẽ liệt kê thông tin về table có tên là tbl_name trong CSDL
db_name; - và lệnh
SHOW TABLE STATUS LIKE 'tbl_name';
sẽ liệt
kê thông tin về table có tên là tbl_name trong CSDL hiện tại.
- Name: tên của table.
- Engine: kiểu của table (VD: InnoDB, MYISAM...).
- Version: phiên bản của table.
- Row_format: kiểu dòng của table (Fixed, Dynamic hoặc Compressed).
- Rows: số lượng dòng có trong table (lưu ý: với một số kiểu table
như InnoDB số lượng dòng chỉ là ước lượng chứ không chính xác, bạn cần dùng
lệnhSELECT COUNT(*) FROM tbl_name;
để lấy chính xác số
dòng). - Avg_row_length: kích thước/độ dài trung bình của một dòng trong
table. - Data_length: kích thước của file lưu trữ table.
- Max_data_length: kích thước tối đa của file lưu trữ table.
- Index_length: kích thước của file index.
- Data_free: dung lượng được cấp phát nhưng chưa được sử dụng trong
file. - Auto_increment: giá trị tiếp theo của cột có kiểu AUTO_INCREMENT
trong table. - Create_time: thời điểm table được tạo.
- Update_time: thời điểm table được cập nhật lần cuối.
- Check_time: thời điểm table được kiểm tra lần cuối.
- Collation: lưu trữ thông tin về charset sử dụng trong table.
- Checksum: giá trị kiểm tra checksum của table.
- Create_options: lưu trữ các thông tin của lệnh CREATE TABLE khi
tạo table. - Comment: thông tin chú thích về table.
cho bạn câu lệnh SQL dùng để tạo ra table đó. VD câu lệnh:
SHOW CREATE TABLE db;
sẽ trả về câu lệnh SQL dùng để tạo table db tương tự như sau:
CREATE TABLE `db` (`Host` char(60) binary NOT NULL default '',
`Db` char(64) binary NOT NULL default '',
`User` char(16) binary NOT NULL default '',
`Select_priv` enum('N','Y') NOT NULL default 'N',
`Insert_priv` enum('N','Y') NOT NULL default 'N',
`Update_priv` enum('N','Y') NOT NULL default 'N',
`Delete_priv` enum('N','Y') NOT NULL default 'N',
`Create_priv` enum('N','Y') NOT NULL default 'N',
`Drop_priv`
enum('N','Y') NOT NULL default 'N',
`Grant_priv`
enum('N','Y') NOT NULL default 'N',
`References_priv`
enum('N','Y') NOT NULL default 'N',
`Index_priv`
enum('N','Y') NOT NULL default 'N',
`Alter_priv`
enum('N','Y') NOT NULL default 'N',
`Create_tmp_table_priv` enum('N','Y')
NOT NULL default 'N',
`Lock_tables_priv`
enum('N','Y') NOT NULL default 'N',
PRIMARY KEY (`Host`,`Db`,`User`),
KEY `User` (`User`)
) TYPE=MyISAM COMMENT='Database privileges';
Tài liệu tham khảo:
- Cú pháp lệnh SHOW TABLES:
http://dev.mysql.com/doc/mysql/en/SHOW_TABLES.html. - Cú pháp lệnh SHOW TABLE STATUS:
http://dev.mysql.com/doc/mysql/en/SHOW_TABLE_STATUS.html. - Cú pháp lệnh SHOW CREATE TABLE:
http://dev.mysql.com/doc/mysql/en/SHOW_CREATE_TABLE.html.
account
Để tạo CSDL mới, MySQL cung cấp cho ta lệnh CREATE DATABASE:
CREATE DATABASE db_name;
Câu lệnh trên sẽ tạo 1 CSDL mới có tên là db_name. Bạn cũng có thể xoá
bỏ một CSDL với lệnh DROP DATABASE:
DROP DATABASE db_name;
Tuy nhiên, CSDL mà đã bị xoá rồi thì không thể khôi phục lại được, cho nên
bạn hãy cẩn thận khi dùng lệnh DROP DATABASE.
Và bạn cũng có thể xem lại cú pháp câu lệnh CREATE DATABASE của 1 CSDL đã có
sẵn bằng lệnh SHOW CREATE DATABASE:
SHOW CREATE DATABASE db_name;
Để tạo account mới và gán quyền truy cập vào MySQL server cho account đó,
MySQL cung cấp cho ta lệnh GRANT. Cú pháp đơn giản của lệnh GRANT như sau:
GRANT quyền ON tên_csdl TO tên_user IDENTIFIED BY 'mật_mã';
- Quyền có dạng như sau:
ALL PRIVILEGES
: tất cả mọi quyền.
(,):
ALTER
: cho phép user sử dụng lệnh ALTER TABLE.CREATE
: cho phép user sử dụng lệnh CREATE TABLE.CREATE TEMPORARY TABLES
: cho phép user sử dụng
lệnh CREATE TEMPORARY TABLE.CREATE VIEW
: cho phép user sử dụng lệnh CREATE
VIEW.DELETE
: cho phép user sử dụng lệnh DELETE.DROP
: cho phép user sử dụng lệnh DROP TABLE.FILE
: cho phép user sử dụng lệnh SELECT ... INTO
OUTFILE và LOAD DATE INFILE.INDEX
: cho phép user sử dụng lệnh CREATE INDEX
và DROP INDEX.INSERT
: cho phép user sử dụng lệnh INSERT.LOCK TABLES
: cho phép user sử dụng lệnh LOCK
TABLES trên những table nào user có quyền SELECT.PROCESS
: cho phép user sử dụng lệnh SHOW FULL
PROCESSLIST.RELOAD
: cho phép user sử dụng lệnh FLUSH.SELECT
: cho phép user sử dụng lệnh SELECT.SHOW DATABASES
: khi user sử dụng lệnh SHOW
DATABASES, danh sach của toàn bộ các CSDL trong hệ thống.SHOW VIEW
: cho phép user sử dụng lệnh SHOW
CREATE VIEW.UPDATE
: cho phép user sử dụng lệnh UPDATE.
USAGE
sẽ gán toàn bộ
các quyền của user là "không được phép". Quyền này thường được gán cho các
account không có quyền global trên hệ thống. Thường sau khi gán quyền USAGE,
quản trị viên của server sẽ tiếp tục gán một vài quyền nhất định cho account
trên một số CSDL nhất định.
- Tên_CSDL có dạng như sau:
*.*
: toàn bộ các CSDL và table trên hệ thống.db_name.*
: giới hạn quyền trên CSDL có tên là
db_name và các table của CSDL này.db_name.tbl_name
: giới hạn quyền trên table có
tên tbl_name trên CSDL có tên db_name.
- Tên_user có dạng như sau:
'nbthanh'@'localhost'
: account với username
nbthanh có thể kết nối từ localhost.'nbthanh'@'%'
: account với username nbthanh có
thể kết nối từ bất kỳ nơi nào trừ localhost.
- Nếu trong câu lệnh GRANT không có phần IDENTIFIED BY 'mật_mã' thì
account sẽ được tạo với mật mã là rỗng.
GRANT ALL PRIVILEGES ON *.* TO 'nbthanh'@'localhost' IDENTIFIED BY
'my_password';
Lệnh trên sẽ tạo 1 account có username là nbthanh với mật mã là
my_password, được phép kết nối từ localhost và có mọi quyền
trên tất cả các CSDL có trên hệ thống.
GRANT SELECT ON *.* TO 'nbthanh'@'%' IDENTIFIED BY 'my_password2';
Lệnh trên sẽ tạo 1 account có username là nbthanh với mật mã là
my_password2, được phép kết nối từ bất cứ nơi đâu ngoại trừ localhost,
nhưng chỉ có quyền đọc (SELECT) trên tất cả các CSDL có trên hệ
thống.
Đôi khi bạn sẽ có nhu cầu đổi mật mã cho 1 account mà không muốn thay đổi lại
các quyền hiện có của account đó, MySQL cung cấp lệnh SET PASSWORD để thực hiện
thao tác này:
SET PASSWORD FOR 'nbthanh'@'localhost' = PASSWORD('new_password');
Lệnh trên sẽ đổi mật mã của account nbthanh, kết nối từ localhost,
thành new_password.
SET PASSWORD FOR 'nbthanh'@'%' = PASSWORD('new_password2');
Lệnh trên sẽ đổi mật mã của account nbthanh, kết nối từ bất cứ nơi đâu
ngoại trừ localhost, thành new_password2.
Và cuối cùng, để xoá account ra khỏi hệ thống, MySQL cung cấp cho ta lệnh
DROP USER:
DROP USER 'nbthanh'@'localhost';
Xoá account có username là nbthanh, kết nối từ localhost, ra khỏi
hệ thống (lệnh này không xoá các account khác như 'nbthanh'@'%').
DROP USER 'nbthanh'@'%';
Xoá account có username là nbthanh, kết nối từ bất cứ nơi đâu ngoài
trừ localhost, ra khỏi hệ thống (lệnh này không xoá các account khác như
'nbthanh'@'localhost').
Lưu ý: Đôi khi bạn cần phải thực hiện lệnh FLUSH PRIVILEGES;
sau khi thực hiện các thao tác thêm/xoá/thay đổi account thì các thao tác mới có
hiệu lực.
Tài liệu tham khảo:
- Những gì trình bày ở trên chỉ là một phần sơ lược rất nhỏ trong toàn bộ
những gì bạn cần phải nằm vững khi quản trị một MySQL Server. Để quản trị
tốt một MySQL Server, bạn hãy nắm kỹ phần Database Administration
trong MySQL Manual:
http://dev.mysql.com/doc/mysql/en/MySQL_Database_Administration.html. - Cú pháp lệnh CREATE DATABASE:
http://dev.mysql.com/doc/mysql/en/CREATE_DATABASE.html. - Cú pháp lệnh DROP DATABASE:
http://dev.mysql.com/doc/mysql/en/DROP_DATABASE.html. - Cú pháp lệnh SHOW CREATE DATABASE:
http://dev.mysql.com/doc/mysql/en/SHOW_CREATE_DATABASE.html. - Cú pháp lệnh GRANT:
http://dev.mysql.com/doc/mysql/en/GRANT.html. - Cú pháp lệnh SET PASSWORD:
http://dev.mysql.com/doc/mysql/en/SET_PASSWORD.html. - Cú pháp lệnh DROP USER:
http://dev.mysql.com/doc/mysql/en/DROP_USER.html. - Cú pháp lệnh FLUSH PRIVILEGES:
http://dev.mysql.com/doc/mysql/en/FLUSH.html.
lệnh và thao tác cơ bản để quản trị một MySQL Server khi trong tay không có các
công cụ nào khác ngoài cái màn hình console đen xì với con trỏ lệnh nhấp nháy.
Tuy nhiên, những gì đã trình bày trong bài viết chỉ là một phần nhỏ, rất nhỏ
trong toàn bộ những gì bạn cần phải nắm vững khi làm việc và quản trị một MySQL
Server.
MySQL Manual là tài liệu không thể thiếu khi bạn muốn làm việc với MySQL
Server.
(sưu tầm)
Không có nhận xét nào:
Đăng nhận xét