AZCode.vn AZCode

Quản lý MySQL

Chạy và tắt MySQL Server

Đầu tiên, để kiểm tra xem MySQL Server là đang chạy hay không, bạn có thể sử dụng lệnh sau:

 ps -ef | grep mysqld

Nếu MySQL đang chạy, thì bạn sẽ thấy tiến trình mysqld được liệt kê trong kết quả. Nếu Server không chạy, thì bạn có thể khởi động nó bởi sử dụng lệnh sau:

root@host# cd /usr/bin
./safe_mysqld &

Bây giờ, nếu bạn muốn tắt một MySQL Server đang chạy, bạn sử dụng lệnh sau:

root@host# cd /usr/bin
./mysqladmin -u root -p shutdown
Enter password: ******

Thiết lập một MySQL User Account

Để thêm một người dùng mới cho MySQL, bạn chỉ cần thêm một entry mới cho bảng user trong Database mysql.

Ví dụ dưới đây sẽ thêm một người dùng mới guest với quyền SELECT, INSERT, và UPDATE với mật khẩu guest123, truy vấn SQL là:

root@host# mysql -u root -p
Enter password:*******
mysql> use mysql;
Database changed

mysql> INSERT INTO user 
          (host, user, password, 
           select_priv, insert_priv, update_priv) 
           VALUES ('localhost', 'guest', 
           PASSWORD('guest123'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)

mysql> SELECT host, user, password FROM user WHERE user = 'guest';
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | guest | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)

Khi thêm một người dùng mới, bạn nhớ mật mã hóa mật khẩu mới bởi sử dụng hàm PASSWORD() được cung cấp bởi MySQL. Như bạn có thể thấy trong ví dụ trên, mật khẩu mypass được mật mã hóa là:

Chú ý lệnh FLUSH PRIVILEGES. Lệnh này nói cho Server để nạp lại các bảng. Nếu bạn không sử dụng lệnh này, thì bạn sẽ không thể kết nối tới mysql với tài khoản mới này, ít nhất tới khi Server được reboot.

Bạn cũng có thể xác định privileges khác cho một người dùng mới bằng việc thiết lập các giá trị của cột sau trong bảng user cho 'Y' khi thực thị truy vấn INSERT hoặc bạn có thể cập nhật chúng sau khi sử dụng truy vấn UPDATE.

  • Select_priv

  • Insert_priv

  • Update_priv

  • Delete_priv

  • Create_priv

  • Drop_priv

  • Reload_priv

  • Shutdown_priv

  • Process_priv

  • File_priv

  • Grant_priv

  • References_priv

  • Index_priv

  • Alter_priv

Một cách khác để thêm user account là bằng cách sử dụng lệnh GRANT SQL. Ví dụ sau sẽ thêm người dùng zara với mật khẩu zara123 cho một cơ sở dữ liệu cụ thể là TUTORIALS.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use mysql;
Database changed

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON TUTORIALS.*
    -> TO 'zara'@'localhost'
    -> IDENTIFIED BY 'zara123';

Ví dụ này cũng sẽ tạo một entry trong bảng dữ liệu gọi là user.

GHI CHÚ: MySQL không kết thúc một lệnh tới khi bạn cung cấp một dấu chấm phảy (;) tại phần cuối của lệnh SQL.

Cấu hình /etc/my.cnf File

Trong hầu hết các tình huống, bạn không nên động đến file này. Theo mặc định, nó sẽ có các entry sau:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Ở đây, bạn có thể xác định một thư mục khác cho error log, nếu không, bạn không nên thay đổi bất cứ entry nào trong bảng này.

Các lệnh MySQL thường sử dụng

Dưới đây là danh sách các lệnh MySQL quan trọng mà bạn sẽ thường xuyên sử dụng trong khi làm việc với MySQL Database:

  • USE Databasename: Lệnh này được sử dụng để chọn một cơ sở dữ liệu cụ thể trong khu vực làm việc.

  • SHOW DATABASES: Lệnh này liệt kê các Database mà là có thể truy cập bởi MySQL DBMS.

  • SHOW TABLES: Hiển thị các bảng trong cơ sở dữ liệu một khi một cơ sở dữ liệu đã được lựa chọn với lệnh USE.

  • SHOW COLUMNS FROM tablename: Hiển thị các thuộc tính, kiểu của thuộc tính, thông tin key, có hay không cho phép NULL, các mặc định, và thông tin khác cho một bảng.

  • SHOW INDEX FROM tablename: Hiển thị chi tiết tất cả chỉ mục trên bảng, bao gồm PRIMARY KEY.

  • SHOW TABLE STATUS LIKE tablename\G: Báo cáo chi tiết hiệu suất và thống kê MySQL DBMS.

Các bài học MySQL phổ biến khác tại AZCode: