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_nametrong 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_nametrong CSDL hiện tại.
7 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2646 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Quản lý MySQL Server sử dụng lệnh trên Console, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Quản lý MySQL Server sử dụng lệnh trên Console
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.
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.
Bài viết này sẽ lấy MySQL Server phiên bản 4.1, cài đặt trên Windows 2000 làm ví dụ. Bạn có
thể tự cài đặt MySQL Server trên máy để thực hành.
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:
• Cú pháp lệnh SHOW DATABASES:
Hiển thị thông tin về 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.
Lệnh SHOW TABLE STATUS sẽ trả về các thông tin sau:
• 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ệnh SELECT 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.
Và cuối cùng, với lệnh SHOW CREATE TABLE tên_table, MySQL sẽ trả về 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:
• Cú pháp lệnh SHOW TABLE STATUS:
• Cú pháp lệnh SHOW CREATE TABLE:
Tạo CSDL và user 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:
o ALL PRIVILEGES: tất cả mọi quyền.
Các quyền sau đây có thể được kết hợp với nhau, phân cách bằng dấu phảy (,):
o ALTER: cho phép user sử dụng lệnh ALTER TABLE.
o CREATE: cho phép user sử dụng lệnh CREATE TABLE.
o CREATE TEMPORARY TABLES: cho phép user sử dụng lệnh CREATE
TEMPORARY TABLE.
o CREATE VIEW: cho phép user sử dụng lệnh CREATE VIEW.
o DELETE: cho phép user sử dụng lệnh DELETE.
o DROP: cho phép user sử dụng lệnh DROP TABLE.
o FILE: cho phép user sử dụng lệnh SELECT ... INTO OUTFILE và LOAD DATE
INFILE.
o INDEX: cho phép user sử dụng lệnh CREATE INDEX và DROP INDEX.
o INSERT: cho phép user sử dụng lệnh INSERT.
o 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.
o PROCESS: cho phép user sử dụng lệnh SHOW FULL PROCESSLIST.
o RELOAD: cho phép user sử dụng lệnh FLUSH.
o SELECT: cho phép user sử dụng lệnh SELECT.
o 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.
o SHOW VIEW: cho phép user sử dụng lệnh SHOW CREATE VIEW.
o UPDATE: cho phép user sử dụng lệnh UPDATE.
Ngoài ra một quyền đặt biệc là 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:
o *.*: toàn bộ các CSDL và table trên hệ thống.
o 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.
o 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:
o 'nbthanh'@'localhost': account với username nbthanh có thể kết nối từ
localhost.
o '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.
Ví dụ:
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:
• Cú pháp lệnh CREATE DATABASE:
• Cú pháp lệnh DROP DATABASE:
• Cú pháp lệnh SHOW CREATE DATABASE:
• Cú pháp lệnh GRANT:
• Cú pháp lệnh SET PASSWORD:
• Cú pháp lệnh DROP USER:
• Cú pháp lệnh FLUSH PRIVILEGES:
Đến đây là kết thúc bài viết. Hi vọng qua bài viết bạn sẽ nắm được một số 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.
Các file đính kèm theo tài liệu này:
- quan_ly_mysql_server_su_dung_lenh_console_1711.pdf