วิธีการเปลี่ยนพอร์ต MySQL/MariaDB เริ่มต้นใน Linux
ในคู่มือนี้ เราจะเรียนรู้วิธีเปลี่ยนพอร์ตเริ่มต้นที่ฐานข้อมูล MySQL/MariaDB เชื่อมโยงกับการแจกจ่าย Linux ที่ใช้ CentOS 7 และ Debian พอร์ตเริ่มต้นที่เซิร์ฟเวอร์ฐานข้อมูล MySQL ทำงานภายใต้ Linux และ Unix คือ 3306/TCP
หากต้องการเปลี่ยนพอร์ตฐานข้อมูล MySQL/MariaDB เริ่มต้นใน Linux ให้เปิดไฟล์การกำหนดค่าเซิร์ฟเวอร์ MySQL เพื่อแก้ไขโดยใช้คำสั่งด้านล่าง
vi /etc/my.cnf.d/server.cnf [On CentOS/RHEL]
vi /etc/mysql/mariadb.conf.d/50-server.cnf [On Debian/Ubuntu]
ค้นหาสถิติบรรทัดเริ่มต้นด้วย [mysqld]
และวางคำสั่งพอร์ตต่อไปนี้ภายใต้คำสั่ง [mysqld]
ดังที่แสดงในข้อความที่ตัดตอนมาด้านล่าง แทนที่ตัวแปรพอร์ตตามลำดับ
[mysqld]
port = 12345
หลังจากที่คุณได้เพิ่มพอร์ต MySQL/MariaDB ใหม่แล้ว ให้บันทึกและปิดไฟล์การกำหนดค่าและติดตั้งแพ็คเกจต่อไปนี้ภายใต้ CentOS 7 เพื่อใช้ SELinux ที่จำเป็น กฎเพื่อให้ฐานข้อมูลเชื่อมโยงกับพอร์ตใหม่
yum install policycoreutils-python
ถัดไป เพิ่มกฎ SELinux ด้านล่างเพื่อผูกซ็อกเก็ต MySQL บนพอร์ตใหม่ และรีสตาร์ท daemon ฐานข้อมูลเพื่อใช้การเปลี่ยนแปลง โดยออกคำสั่งต่อไปนี้ แทนที่ตัวแปรพอร์ต MySQL อีกครั้งเพื่อให้ตรงกับหมายเลขพอร์ตของคุณเอง
--------------- On CentOS/RHEL ---------------
semanage port -a -t mysqld_port_t -p tcp 12345
systemctl restart mariadb
--------------- On Debian/Ubuntu ---------------
systemctl restart mysql [On Debian/Ubuntu]
เพื่อตรวจสอบว่าการกำหนดค่าพอร์ตสำหรับเซิร์ฟเวอร์ฐานข้อมูล MySQL/MariaDB ถูกนำไปใช้สำเร็จหรือไม่ ให้ออก netstat หรือ คำสั่ง ss และกรองผลลัพธ์ผ่านคำสั่ง grep เพื่อให้ระบุได้ง่าย พอร์ต MySQL ใหม่
ss -tlpn | grep mysql
netstat -tlpn | grep mysql
คุณยังสามารถแสดงพอร์ต MySQL ใหม่ได้โดยการล็อกอินเข้าสู่ฐานข้อมูล MySQL ด้วยบัญชีรูทและออกคำสั่งด้านล่าง อย่างไรก็ตาม โปรดทราบว่าการเชื่อมต่อกับ MySQL บน localhost ทั้งหมดจะทำผ่านซ็อกเก็ตโดเมน Unix ของ MySQL ไม่ใช่ผ่านซ็อกเก็ต TCP แต่ต้องระบุหมายเลขพอร์ต TCP อย่างชัดเจนในกรณีของการเชื่อมต่อระยะไกลของบรรทัดคำสั่งไปยังฐานข้อมูล MySQL โดยใช้แฟล็ก -P
mysql -h localhost -u root -p -P 12345
MariaDB [(none)]> show variables like 'port';
ในกรณีของการเชื่อมต่อระยะไกลไปยังฐานข้อมูล MySQL ผู้ใช้รูทจะต้องได้รับการกำหนดค่าอย่างชัดเจนเพื่ออนุญาตการเชื่อมต่อขาเข้าจากเครือข่ายทั้งหมดหรือเพียงที่อยู่ IP โดยการออกคำสั่งด้านล่างในคอนโซล MySQL:
mysql -u root -p
MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.1.159' identified by 'strongpass';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
เข้าสู่ระบบเซิร์ฟเวอร์ MySQL จากระยะไกลผ่านทางไคลเอนต์บรรทัดคำสั่งบนพอร์ตใหม่โดยออกคำสั่งด้านล่าง
mysql -h 192.168.1.159 -P 12345 -u root -p
สุดท้ายนี้ เมื่อคุณเปลี่ยนพอร์ตเซิร์ฟเวอร์ฐานข้อมูล MySQL/MariaDB แล้ว คุณจะต้องอัปเดตกฎไฟร์วอลล์การแจกจ่ายของคุณเพื่ออนุญาตการเชื่อมต่อขาเข้าไปยังพอร์ต TCP ใหม่ เพื่อให้ไคลเอ็นต์ระยะไกลสามารถเชื่อมต่อกับฐานข้อมูลได้สำเร็จ