Để quản trị MySQL server có nhiều công cụ, tùy mục đích có thể sử dụng ngay các trình quản lý đi cùng với hệ thống MySQL như Show Nếu muốn tương tác với MySQL Server mà chưa có những công cụ này (MySQL Client) thì cài đặt như sau: (MySQL Client chứ không phải MySQL Server) # CÀI ĐẶT TRÊN CENTOS / RHEL yum install mysql -y # CÀI ĐẶT TRÊN UBUNTU / DEBIAN ... apt install mysql-client Phần này tìm hiểu cơ bản
sử dụng các công cụ ở trên để cấu hình, quản trị MySQL. Những lệnh này thi hành bằng cách gõ lệnh với tham số phù hợp (gõ tại dòng lệnh cmd của Linux, Windows), thường các công cụ trên có yêu cầu cung cấp Ví dụ, dùng mysql -u root -p123456 Khi thi hành lệnh trên, nếu đúng user/password thì sẽ có dòng nhắc nhập các truy vấn mong muốn đến MySQL. Nếu thi hành lệnh mà không chỉ ra password ở dòng lệnh, thì nó sẽ nhắc để nhập vào ví dụ: mysql -u root -p Enter password: Nếu muốn thi hành bằng cách kết nối tới một Remote thì thêm vào tham số mysql -u root -p -h 123.123.123.12 Enter password: Thậm chỉ cần chỉ ra cổng kết nối thì dùng tham số
mysqladmin là công cụ hữu ích dành cho việc quản trị, nó có thể thi hành nhiều loại tác vụ với MySQL như: tạo, xóa một CSDL, đổi password ... Các thiết lập với tool này xem bằng lệnh: mysqladmin --help Trong thông tin hiện thị có cả đường dẫn đến các file thiết lập Đặt lại password cho rootPassword mới đặt cho root nhập trong cặp mysqladmin -u root -p password 'newpassword' Thông tin về MySQL ServerSử
dụng tham số mysqladmin -u root -prootpassword status --Kết quả Uptime: 1087632 Threads: 3 Questions: 11088072 Slow queries: 0 Opens: 114138 Flush tables: 3 Open tables: 3826 Queries per second avg: 10.194 Kiểm tra phiên bản MySQL Servermysqladmin -u root -prootpassword version Các tiến trình đang tương tác với MySQLmysqladmin -u root -pyourpassword processlist Kết quả dạng bảng +-------+----------+-------------+------+---------+-------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+----------+-------------+------+---------+-------+-------+------------------+ | 1453 | root | localhost | | Sleep | 15386 | | | | 4687 | user1 | :60230 | mydb | Sleep | 561 | | | | 4688 | user2 | :60231 | mydb | Sleep | 561 | | select * from pos| | 5407 | user2 | :60309 | | Sleep | 14525 | | | | 22792 | root | localhost | | Query | 0 | init | show processlist | +-------+----------+-------------+------+---------+-------+-------+------------------+ Các cột thông tin như Nếu muốn cứ 1 giây
lại cập nhật thông tin này một lần thì thêm tham số mysqladmin -u root -pyourpassword processlist -i 1 Kill process đang truy cập MySQLLấy ID các process bằng lệnh trên, nếu muốn kill cái nào (sleep hoặc đang làm quá tải ...), ví dụ kill tiến trình có ID 1453g mysqladmin -u root -pyourpassword kill 1453 Lấy giá trị các biến MySQLHiện thị giá trị các biến lưu trạng thái dùng lệnh: mysqladmin -u root -pyourpassword extended-status Hiện thị giá trị các biến thiết lập (các biến này bạn có thể thiết lập trong file cấu hình, bằng lệnh ...): mysqladmin -u root -pyourpassword variables Xóa một số thông tin cacheKhi MySQL hoạt động có nhiều thông tin lưu tạm, cache chờ xử lý, nếu muốn xử lý ngay và xóa khỏi cache thì thi hành một số tham số như: mysqladmin -u root -pyourpassword flush-hosts # xóa cached host mysqladmin -u root -pyourpassword flush-logs # xóa logs mysqladmin -u root -pyourpassword flush-status # xóa các biến trạng thái mysqladmin -u root -pyourpassword flush-tables # xóa cached bảng mysqladmin -u root -pyourpassword flush-threads # cache thread mysqladmin -u root -pyourpassword flush-privileges # tải lại phân quyền Tạo DatabaseTạo một CSDL có tên mydb: mysqladmin -u root -pyourpassword create mydb Có thể liệt kê các database có trong server bằng lệnh: mysqlshow -u root -pyourpassword Xóa DatabaseXóa một CSDL có tên mydb: mysqladmin -u root -pyourpassword drop mydb Trong quá trình vận hành MySQL server, có thể có nhiều nguyên nhân dẫn tới lỗi CSDL, ví dụ bị crash ..., để kiểm tra, sửa chữa hay tối
ưu ta dùng đến công cụ Kiểm tra tình trạng CSDLNếu muốn kiểm tra một database có tên mydb thi hành lệnh sau: mysqlcheck -u root -pyourpassword -a mydb Thi hành lệnh trên, nó sẽ kiểm tra tất cả các bảng của mydb và hiện thi thông tin cho biết có lỗi gì trên các bảng đó hay không Nếu muốn kiểm tra tất cả các database thi hành lệnh sau: mysqlcheck -u root -pyourpassword --all-databases Tối ưu cơ sở dữ liệuĐể tối ưu (optimize) thêm vào tham số mysqlcheck -u root -pyourpassword -o mydb Để kiểm tra và tối ưu toàn bộ các database trong server mysqlcheck -u root -pyourpassword -o --all-databases Sửa chữa, tối ưuĐể kiểm tra, tự động sửa chữa và và tối toàn bộ các database chạy lệnh sau: mysqlcheck -u root -pyourpassword --auto-repair -o --all-databases Công cụ này sẽ sao database ra một file để lưu trữ, file lưu trữ có các dòng lệnh SQL và dữ liệu mà việc chạy các lệnh đó sẽ phụ hồi lại dữ liệu ban đầu (sử dụng Ví dụ để sao lưu một database có tên mysqldump -u root -pyourpassword mydb > backup.sql Lưu ý nếu file backup.sql
đang tồn tại nó sẽ bị ghi đè bởi dữ liệu mới, nếu muốn mỗi lần sao lưu thêm vào tên file backup thành phần là năm, tháng, ngày, giờ, phút, giây lúc sao lưu thì thêm vào tên file thành phần sau mysqldump -u root -pyourpassword mydb > backup-$(date +%Y-%m-%d_%H_%M_%S).sql Có thể backup toàn bộ các database có trong server ra một file với tham số mysqldump -u root -pyourpassword --all-databases > alldb-$(date +%Y-%m-%d_%H_%M_%S).sql Hoặc là chỉ backup một bảng nào đó của một database, ví dụ bảng mysqldump -u root -pyourpassword mydb user > user-$(date +%Y-%m-%d_%H_%M_%S).sql mysqlimport - phục hồi databasemysqlimport được dùng để
phục hồi, ví dụ phục hồi lại mysqlimport -u root -pyourpassword mydb mybackup.sql Ngoài ra cũng có thể dùng tool mysql -u root -pyourpassword mydb < mybackup.sql mysql là công cụ thông dụng, có thể chạy trực tiếp các câu lệnh SQL (xem SQL cơ bản) Kết nối đến MySQL Server bằng tiện ích # mysql -u root -pyourpassword Sau khi kết nội, có dấu nhắc Muốn thoát hẳn khỏi Từ dấu nhắc lệnh có dạng Xem danh sách các databasemysql> show databases; Chuyển database hiện tạiTrước khi thi hành được các lệnh SQL, phải cho biết các lệnh SQL đó tác động nên database nào, ở một thời điểm có thể chọn một database đang sử dụng bằng lệnh mysql> use mydb; Xem các bảng có trong database hiện tạimysql> show tables; Xem cấu trúc bảngVí dụ xem cấu trúc bảng user mysql> describe user; +----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | user_id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(100) | NO | MUL | NULL | | | password | varchar(128) | NO | MUL | NULL | | | email | varchar(255) | NO | MUL | NULL | | Các index của bảngmysql> show index from user; Tương tự, bất kỳ câu lệnh SQL nào có thể thi hành ở đây theo cách tương tự, ví dụ: mysql> select * from user; Các thành phần hệ thống như cấu trúc bảng, các CSDL, các user ... được MySQL bố trí vào các database đặc biệt như: Ví dụ Các user trong MySQL mysql> select User,Host,Password from mysql.user; Cột Password chứa mã hóa bằng hàm PASSWORD(pass-text). Thêm một user mysql> CREATE USER 'newusername'@'localhost' IDENTIFIED BY 'newpassword'; LƯU Ý: Khi thêm User trên MySQL 8 - thư viện PHP có thể chưa hỗ trợ cơ chế xác thực mới - nên bạn cần tạo ra user với xác thực password cũ mysql> CREATE USER 'newusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; Nếu muốn đổi kiểu xác thực user đã có như kiểu cũ thì: mysql> ALTER USER 'newusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; Phân quyền truy cập cho user vào mydb mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'newusername'@'localhost'; Các biến trong MySQL có thể xem bằng lệnh Kiểm tra Version mysql> SHOW VARIABLES LIKE "%version%"; |