Saturday, January 18, 2025

Triển khai PhpMyAdmin với Nginx trên Ubuntu

-

PhpMyAdmin, Nginx, MySQL và MariaDB là các công cụ và công nghệ phổ biến trong lĩnh vực quản lý cơ sở dữ liệu web. Dưới đây là mô tả ngắn về từng công cụ:

  • phpMyAdmin: phpMyAdmin là một ứng dụng web mã nguồn mở được sử dụng để quản lý cơ sở dữ liệu MySQL hoặc MariaDB thông qua giao diện đồ họa. Nó cung cấp các tính năng như tạo cơ sở dữ liệu, bảng, người dùng, thực hiện truy vấn SQL, sao lưu và phục hồi dữ liệu, và nhiều tính năng khác. phpMyAdmin giúp đơn giản hóa việc quản lý và tương tác với cơ sở dữ liệu MySQL hoặc MariaDB.
  • Nginx: Nginx (đọc là “engine-x”) là một máy chủ web và proxy ng reverse-proxy mã nguồn mở. Nó được thiết kế để xử lý các tải trọng lớn và có hiệu suất cao, đồng thời tiêu thụ ít tài nguyên hệ thống. Nginx được sử dụng rộng rãi làm máy chủ web để phục vụ các trang web tĩnh và động.
  • MySQL và MariaDB: MySQL và MariaDB là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở. Chúng cung cấp một cách tiện lợi và mạnh mẽ để lưu trữ và quản lý cơ sở dữ liệu quan hệ. MySQL đã trở thành một trong những RDBMS phổ biến nhất và được sử dụng rộng rãi trong các ứng dụng web. MariaDB là một nhánh phát triển từ MySQL và được xây dựng để duy trì tính tương thích ngược với MySQL và cung cấp các cải tiến và tính năng mới.

Tại sao chúng ta cần có phpMyAdmin?

  • phpMyAdmin cung cấp giao diện đồ họa thân thiện cho việc quản lý cơ sở dữ liệu MySQL hoặc MariaDB. Nó giúp người dùng không cần phải làm quen với lệnh SQL để thao tác với cơ sở dữ liệu.
  • Nó cung cấp các tính năng như tạo, chỉnh sửa và xóa cơ sở dữ liệu, bảng, truy vấn dữ liệu, sao lưu và phục hồi dữ liệu, quản lý người dùng và phân quyền, và nhiều tính năng khác.
  • phpMyAdmin giúp đơn giản hóa công việc quản lý cơ sở dữ liệu, giúp người dùng tạo, sửa đổi và truy vấn dữ liệu một cách dễ dàng và tiện lợi thông qua giao diện web.

Để cài đặt và cấu hình phpMyAdmin trên Nginx trên Ubuntu 18.04 và sử dụng cơ sở dữ liệu ngoài, bạn có thể làm theo các bước sau:

Cài đặt Nginx.

sudo apt update
sudo apt install nginx -y

Cài đặt PHP và các gói phụ trợ.

sudo apt install php-fpm php-mysql php-json php-mbstring -y

Cài đặt và cấu hình MariaDB (hoặc MySQL) trên máy chủ của bạn.

sudo apt install software-properties-common -y
sudo curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
sudo bash mariadb_repo_setup --mariadb-server-version=10.6
sudo apt update
sudo apt -y install mariadb-common mariadb-client-10.6 mariadb-server-10.6 

Khởi động cho MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Cài đặt phpMyAdmin.

sudo apt install phpmyadmin -y

Nếu bạn gặp lời nhắc này thì có thể bỏ qua nếu bạn đang muốn sử dụng Nginx làm webserver.

Thông báo trên đề xuất sử dụng công cụ dbconfig-common để cấu hình cơ sở dữ liệu cho phpMyAdmin. Công cụ này giúp tự động cài đặt và cấu hình cơ sở dữ liệu cho phpMyAdmin một cách đơn giản. Nếu bạn là một quản trị cơ sở dữ liệu nâng cao và muốn cấu hình cơ sở dữ liệu một cách thủ công hoặc đã cài đặt và cấu hình cơ sở dữ liệu trước đó, bạn nên từ chối tùy chọn này.

Nếu bạn không có kinh nghiệm nâng cao với quản trị cơ sở dữ liệu hoặc muốn sử dụng cách cấu hình tự động, bạn có thể chọn tùy chọn này để cài đặt và cấu hình cơ sở dữ liệu cho phpMyAdmin bằng dbconfig-common. Thông tin chi tiết về cách thực hiện cấu hình có thể được cung cấp trong tài liệu /usr/share/doc/phpmyadmin.

Khi bạn nhận được thông báo “Please provide a password for phpmyadmin to register with the database server”, bạn có thể nhập mật khẩu của bạn cho phpMyAdmin hoặc để trống để sinh một mật khẩu ngẫu nhiên.

Nếu bạn muốn tự chọn mật khẩu, hãy nhập mật khẩu mong muốn của bạn và nhấn Enter.

Nếu bạn muốn sử dụng mật khẩu ngẫu nhiên, hãy để trống và nhấn Enter. Trong trường này, một mật khẩu sẽ được sinh tự động và hiển thị sau khi quá trình cài đặt hoàn tất.

Lưu ý: Nếu bạn chọn mật khẩu ngẫu nhiên, hãy chắc chắn ghi lại mật khẩu này vì bạn sẽ cần nó để đăng nhập vào phpMyAdmin sau này.

Khi bạn nhận được thông báo “Please provide the password for the administrative account ‘root’ with which this package should create its MySQL database and user”, bạn cần cung cấp mật khẩu cho tài khoản quản trị của cơ sở dữ liệu MySQL.

Cung cấp xác nhận lại mật khẩu của bạn

Hãy nhập mật khẩu của bạn cho tài khoản quản trị ‘root’ và nhấn Enter.

Cấu hình Nginx để chạy phpMyAdmin bằng cách tạo một file cấu hình Nginx mới cho phpMyAdmin.

echo '''server {
    listen 80;
    server_name phpmyadmin.hoanghd.com;

    root /usr/share/phpmyadmin;
    index index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }
}''' > /etc/nginx/conf.d/phpmyadmin.conf

Khởi động lại Nginx:

sudo service nginx restart

Bạn nên chạy thêm lệnh dưới để sửa lỗi Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable.

sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

Truy cập vào phpMyAdmin bằng cách truy cập vào địa chỉ http://phpmyadmin.hoanghd.com trên trình duyệt web. Đăng nhập bằng thông tin xác thực của cơ sở dữ liệu ngoài mà bạn muốn sử dụng.

Kết quả login thành công.


Nếu bạn sử dụng một DB ở ngoài để lưu trữ Database cho phpMyAdmin, bạn hãy thay đổi thông tin kết nối như sau:

Giả sử mình có một Database ở ngoài có IP Address là:

root@localhost:~# ip addr show ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 8e:f7:13:99:a0:26 brd ff:ff:ff:ff:ff:ff
    inet 192.168.13.201/23 brd 192.168.13.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 fe80::8cf7:13ff:fe99:a026/64 scope link 
       valid_lft forever preferred_lft forever

Giờ mình chạy một container MariaDB để lưu thông tin cho phpMyAdmin.

docker run --name mariadb -t \
      -e MYSQL_DATABASE="phpmyadmin" \
      -e MYSQL_USER="phpmyadmin" \
      -e MYSQL_PASSWORD="Hoanghd164" \
      -e MYSQL_ROOT_PASSWORD="Hoanghd164" \
      -p 3306:3306 \
      -d mariadb 

Để thay đổi thông tin kết nối của phpMyAdmin tới cơ sở dữ liệu, bạn cần chỉnh sửa file cấu hình của phpMyAdmin.

Kết quả sau khi chạy, container đã run thành công.

root@localhost:~# docker ps | grep -w mariadb
fb30c1baf356   mariadb                  "docker-entrypoint.s…"   29 seconds ago   Up 28 seconds          0.0.0.0:3306->3306/tcp, :::3306->3306/

Kết quả port 3306 đã lắng nghe trên server 192.168.13.201.

root@localhost:~# netstat -tlnp | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      15428/docker-proxy  
tcp        0      0 127.0.0.1:13306         0.0.0.0:*               LISTEN      2671/docker-proxy   
tcp6       0      0 :::3306                 :::*                    LISTEN      15435/docker-proxy  

Bây giờ trên server chạy phpMyAdmin co IP Address 192.168.13.202 mình đã kết nối thành công tới DB bên server 192.168.13.201.

root@localhost:~# ip addr show ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 66:8e:a6:74:6d:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.13.202/23 brd 192.168.13.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 fe80::648e:a6ff:fe74:6d7e/64 scope link 
       valid_lft forever preferred_lft forever


root@localhost:~# telnet 192.168.13.201 3306
Trying 192.168.13.201...
Connected to 192.168.13.201.
Escape character is '^]'.
5.5.5-10.11.3-MariaDB-1:10.11.3+maria~ubu22040f'.O%h]z-m3V9Z8G=:LQ0mysql_native_password

Hãy chắc chắn thông tin login vào DB chính xác.

root@localhost:~# mysql -h 192.168.13.201 -u root -pHoanghd164
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.11.3-MariaDB-1:10.11.3+maria~ubu2204 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Bạn hãy backup file config.inc.php trước khi chỉnh sửa để nếu chỉnh sửa sai có thể rollback lại nhé.

cp /etc/phpmyadmin/config.inc.php /etc/phpmyadmin/config.inc.php.bak

Mở file cấu hình của phpMyAdmin bằng trình soạn thảo:

sudo vi /etc/phpmyadmin/config.inc.php

Tìm và chỉnh sửa các dòng sau để thay đổi thông tin kết nối đến cơ sở dữ liệu:

if (!empty($dbname)) {
    $cfg['Servers'][$i]['host'] = '192.168.13.201'; // Địa chỉ máy chủ MySQL/MariaDB

    if (!empty($dbport) || $dbserver != 'localhost') {
        $cfg['Servers'][$i]['port'] = 3306; // Cổng kết nối
    }

    $cfg['Servers'][$i]['controluser'] = 'root'; // Tên người dùng MySQL/MariaDB
    $cfg['Servers'][$i]['controlpass'] = 'Hoanghd164'; // Mật khẩu người dùng
    $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; //Tên của Database
}

Thay thông tin xác thực của cơ sở dữ liệu bạn muốn sử dụng. Lưu, đóng file cấu hình và khởi động lại Nginx:

sudo service nginx restart

Bây giờ bạn đã cài đặt và cấu hình phpMyAdmin trên Nginx trên Ubuntu và sử dụng cơ sở dữ liệu ngoài thành công. Bạn có thể quản lý cơ sở dữ liệu đó thông qua giao diện phpMyAdmin.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories