ค้นหาเว็บไซต์

วิธีการเปลี่ยนพอร์ต 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 ใหม่ เพื่อให้ไคลเอ็นต์ระยะไกลสามารถเชื่อมต่อกับฐานข้อมูลได้สำเร็จ