Wednesday, 16 January 2013

Cài đặt, cấu hình, quản trị mysql-server

Bài viết thực hiện trên :

➜ hvn@lappy  ~  uname -ir && lsb_release -d
3.2.0-30-generic x86_64
Description:    Ubuntu 12.04.1 LTS

Sau khi luyện xong các lệnh trong bài này, bạn có thể tự chạy và quản lý 1 mysql-server cho các sản phẩm của mình, hoàn toàn không cần dùng thêm phpmyadmin.

Cài đặt:
➜ hvn@lappy  ~  sudo apt-get install mysql-server mysql-client
(sẽ cần nhập password cho user root)

Nếu gặp lỗi
Errors were encountered while processing:
 mysql-server-5.5
 mysql-server

Hãy gõ các lệnh sau để sửa:

    dpkg --remove mysql-server
    sudo apt-get purge -f mysql-server mysql-common
    sudo apt-get install mysql-server mysql-common

Cài xong là chạy luôn, không cần thiết phải config.


File config:
Sau khi cài xong hãy đọc lướt qua file config chính của mysql-server, nằm ở `/etc/mysql/my.cnf`:
có rất nhiều option nhưng 1 option bạn nên chú ý là dòng:
bind-address            = 127.0.0.1
nếu muốn truy cập mysql-server từ ngoài, bạn phải chuyển địa chỉ này thành 0.0.0.0

Đăng nhập
với tài khoản root và password đã nhập lúc cài:
➜ hvn@lappy  ~  mysql -u root -p
nếu muốn đăng nhập vào mysql ở 1 địa chỉ nào, bạn có thể dùng option -h
➜ hvn@lappy  ~  mysql -h dev.vccloud.vn -u hvn -p

NOTE: câu lệnh của mysql không phân biệt chữ HOA-thường.
Kiểm tra các user có sẵn sau khi cài đặt:
mysql> SHOW DATABASES;

mysql> use mysql;
mysql> SHOW TABLES;
...
Database changed
mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | 127.0.0.1 |
| root             | ::1       |
|                  | lappy     |
| root             | lappy     |
|                  | localhost |
| debian-sys-maint | localhost |
| root             | localhost |
+------------------+-----------+
7 rows in set (0.00 sec)


Xem user hiện tại:
mysql> select current_user();
+----------------+
| current_user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

Tạo user mới:
mysql> create user 'hvn'@'%' identified by 'passwordkute';
Query OK, 0 rows affected (0.00 sec)

Xóa user:
mysql> DROP USER 'glance'@'%';
Query OK, 0 rows affected (0.00 sec)

Đổi password:
mysql> set password for 'hvn'@'%' = password('123457');
Query OK, 0 rows affected (0.00 sec)

Xem grants (quyền):
mysql> show grants for 'root'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*1E3D084DE8C16153E70B831F0357A73430BE2C7C' WITH GRANT OPTION |
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                          
2 rows in set (0.00 sec)

Gán quyền cho user vừa tạo:
mysql> GRANT ALL PRIVILEGES ON `hvn\_%`.* TO 'hvn'@'%'
Câu này gán tất cả các quyền cho user 'hvn'@'%' tại các db bắt đầu bằng hvn_


'hvn'@'%' : ở đây hvn là tên user, '%' là tên host. bạn có thể chạy lại câu lệnh select phía trên để xem các user, host đang tồn tại.
'%' là một ký hiệu đặc biệt, nó giống như ký hiệu * trong bash, hay có thể nói là tất cả các host. Tức là cho phép user hvn truy cập từ tất cả các host (tất nhiên phải có passwd). Nếu muốn bạn có thể thay bằng 'hvn'@'domain_tuy_y' để giới hạn truy cập đến từ host đó. Nếu chỉ muốn các user đăng nhập từ máy cài server, bạn hãy để host là localhost.

mysql sử dụng cặp 'user'@'host' để xác định 1 "tài khoản", khi bạn không chỉ rõ host, nó sẽ coi như bạn ám chỉ host '%'

Sau khi tạo user và gán quyền như trên, bạn có thể login vào mysql từ các server ngoài, nhưng ngay tại máy đó sẽ không được.

Để login được bạn phải xóa 2 user ‘’ ban đầu đi rồi flush:
mysql> delete from user where user='';
Query OK, 2 rows affected (0.00 s)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Bây giờ bạn đã có thể đăng nhập vào từ bất cứ đâu.

Backup
Backup 1 db:
# mysqldump -u root -p ten_db > filebkp.sql
Backup tất cả database:
# mysqldump -u root -p --all-databases > /tmp/all-database.sql

Backup tự động:
Cài thêm gói automysqlbackup là xong.
# sudo apt-get install automysqlbackup

File config /etc/default/automysqlbackup
Các file backup nằm ở BACKUPDIR="/var/lib/automysqlbackup"

Bạn không cần làm gì sau khi cài đặt, bởi automysqlbackup tự động đọc root user, password từ file /etc/mysql/debian.cnf


Import database:
# mysql -u user -p < file.sql

Gỡ
(vẫn còn mấy file config ở /etc/mysql và file database ở /var/lib/mysql, phải xóa tay)
➜ hvn@lappy  ~  sudo apt-get purge mysql-server-core-5.5
...
The following packages will be REMOVED:
  mysql-server* mysql-server-5.5* mysql-server-core-5.5*

SEO: cài đặt mysql, đổi pass mysql, lỗi mysql, cai dat mysql, doi pass mysql, tao user mysql, tạo user mysql.