ແກ້ໄຂ: ERROR 2003 (HY000): Cant ເຊື່ອມຕໍ່ກັບ MySQL server ໃນ 127.0.0.1 (111)


ບົດແນະ ນຳ ນີ້ມີຈຸດປະສົງເພື່ອອະທິບາຍຂັ້ນຕອນທີ່ ຈຳ ເປັນ ສຳ ລັບການແກ້ໄຂ“ ERROR 2003 (HY000): ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບ MySQL server ໃນ ‘127.0.0.1’ (111)” ເຊິ່ງອາດຈະເກີດຂື້ນເມື່ອທ່ານພະຍາຍາມເຂົ້າເຖິງ server ຂອງຖານຂໍ້ມູນ MySQL.

ກ່ອນທີ່ຈະກ້າວຕໍ່ໄປອີກ, ຖ້າທ່ານເປັນຜູ້ໃຊ້ Linux ຜູ້ ໃໝ່ ໃນ MySQL/MariaDB, ຫຼັງຈາກນັ້ນທ່ານອາດຈະພິຈາລະນາຮຽນຮູ້ 20 MySQL (Mysqladmin) Commands ສຳ ລັບການບໍລິຫານຖານຂໍ້ມູນໃນ Linux ເຊັ່ນກັນ.

ໃນທາງກົງກັນຂ້າມ, ຖ້າທ່ານເປັນຜູ້ໃຊ້ MySQL ທີ່ມີປະສົບການໃນລະດັບປານກາງ/ທີ່ມີປະສົບການແລ້ວ, ທ່ານສາມາດເປັນແມ່ບົດກ່ຽວກັບການປັບແຕ່ງການ ນຳ ໃຊ້ MySQL/MariaDB 15 ຂໍ້ນີ້ແລະ ຄຳ ແນະ ນຳ ກ່ຽວກັບການເພີ່ມປະສິດທິພາບທີ່ເປັນປະໂຫຍດ.

ໝາຍ ເຫດ: ສຳ ລັບບົດສອນນີ້, ສົມມຸດວ່າທ່ານໄດ້ຕິດຕັ້ງ server server ຖານຂໍ້ມູນ mysql ແລ້ວ.

ກັບມາຮອດຈຸດສຸມ, ມີສາເຫດໃດແດ່ທີ່ເປັນໄປໄດ້ຂອງຄວາມຜິດພາດນີ້?

<

  • ຄວາມລົ້ມເຫຼວຂອງເຄືອຂ່າຍໂດຍສະເພາະຖ້າເຊີຟເວີຖານຂໍ້ມູນ mysql ກຳ ລັງໃຊ້ງານຢູ່ໃນໂຮດຫ່າງໄກສອກຫຼີກ.
  • ບໍ່ມີເຊີບເວີ mysql ກຳ ລັງໃຊ້ງານກັບໂຮດທີ່ກ່າວມານັ້ນ.
  • Firewall ຂັດຂວາງການເຊື່ອມຕໍ່ TCP-IP ຫຼືເຫດຜົນອື່ນໆທີ່ກ່ຽວຂ້ອງ.
  • ຂ້າງລຸ່ມນີ້ແມ່ນບາດກ້າວທີ່ ຈຳ ເປັນໃນການຈັດການກັບມັນ.

    1. ຖ້າເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນຢູ່ໃນເຄື່ອງຫ່າງໄກສອກຫຼີກ, ຫຼັງຈາກນັ້ນລອງທົດສອບການເຊື່ອມຕໍ່ຂອງລູກຄ້າ - server ໂດຍໃຊ້ ຄຳ ສັ່ງ ping , ຍົກຕົວຢ່າງ:

    $ ping server_ip_address
    

    ເມື່ອມີການເຊື່ອມຕໍ່ແລ້ວ, ໃຫ້ໃຊ້ ຄຳ ສັ່ງ ps ຂ້າງລຸ່ມນີ້ເຊິ່ງສະແດງຂໍ້ມູນກ່ຽວກັບການເລືອກຂະບວນການທີ່ມີການເຄື່ອນໄຫວ, ພ້ອມດ້ວຍທໍ່ ທໍ່ ແລະ grep, ເພື່ອກວດສອບວ່າ da mysql daemon. ໃຊ້ໃນລະບົບຂອງທ່ານ.

    $ ps -Af | grep mysqld
    

    ບ່ອນທີ່ທາງເລືອກ:

    <

  • -A - ກະຕຸ້ນການເລືອກຂະບວນການທັງ ໝົດ
  • -f - ສາມາດເປີດບັນຊີລາຍຊື່ຮູບແບບເຕັມຮູບແບບ
  • ຖ້າບໍ່ມີຜົນອອກມາຈາກ ຄຳ ສັ່ງກ່ອນ ໜ້າ ນີ້, ໃຫ້ເລີ່ມຕົ້ນໃຫ້ບໍລິການ mysql ດັ່ງຕໍ່ໄປນີ້:

    $ sudo systemctl start mysql.service
    $ sudo systemctl start mariadb.service
    OR
    # sudo /etc/init.d/mysqld start
    

    ຫຼັງຈາກເລີ່ມຕົ້ນການບໍລິການ mysql, ພະຍາຍາມເຂົ້າເຖິງຖານຂໍ້ມູນ server:

    $ mysql -u username -p -h host_address  
    

    2. ຖ້າທ່ານຍັງມີຂໍ້ຜິດພາດຢູ່ຄືເກົ່າ, ຫຼັງຈາກນັ້ນ ກຳ ນົດພອດ (ຄ່າເລີ່ມຕົ້ນແມ່ນ 3306) ທີ່ daemon mysql ກຳ ລັງຟັງໂດຍການແລ່ນ ຄຳ ສັ່ງ netstat.

    $ netstat -lnp | grep mysql
    

    ບ່ອນທີ່ທາງເລືອກ:

    <

  • -l - ສະແດງທ່າທາງການຟັງ
  • -n - ສາມາດສະແດງທີ່ຢູ່ຂອງຕົວເລກ
  • -p - ສະແດງ PID ແລະຊື່ຂອງໂປແກຼມທີ່ເປັນເຈົ້າຂອງເຕົ້າຮັບ
  • ດັ່ງນັ້ນ, ໃຊ້ຕົວເລືອກ -P ເພື່ອລະບຸພອດທີ່ທ່ານເຫັນຈາກຜົນໄດ້ຮັບຂ້າງເທິງໃນຂະນະທີ່ເຂົ້າເຖິງຖານຂໍ້ມູນ:

    $ mysql -u username -p -h host_address -P port
    

    3. ຖ້າທຸກ ຄຳ ສັ່ງຂ້າງເທິງ ດຳ ເນີນການຢ່າງປະສົບຜົນ ສຳ ເລັດ, ແຕ່ທ່ານຍັງເຫັນຂໍ້ຜິດພາດຢູ່, ເປີດເອກະສານ mysql config.

    $ vi /etc/mysql/my.cnf
    OR
    $ vi /etc/mysql/mysql.conf.d/mysqld.cnf 
    

    ຊອກຫາເສັ້ນທາງລຸ່ມແລະປະກອບ ຄຳ ເຫັນອອກໂດຍໃຊ້ຕົວອັກສອນ # :

    bind-address = 127.0.0.1 
    

    ບັນທຶກເອກະສານແລະອອກ, ຫລັງຈາກນັ້ນໃຫ້ບໍລິການຂອງ mysql ເລີ່ມຕົ້ນເຊັ່ນ:

    $ sudo systemctl start mysql.service
    $ sudo systemctl start mariadb.service
    OR
    # sudo /etc/init.d/mysqld start
    

    ເຖິງຢ່າງໃດກໍ່ຕາມ, ຖ້າທ່ານມີການໃຊ້ງານ Iptables ພະຍາຍາມທົບທວນການບໍລິການ firewall ແລະເປີດທີ່ Port mysql, ສົມມຸດວ່າມັນແມ່ນ firewall ກຳ ລັງສະກັດການເຊື່ອມຕໍ່ TCP-IP ກັບ server mysql ຂອງທ່ານ.

    ຫມົດເທົ່ານີ້! ທ່ານຮູ້ວິທີອື່ນຫລືມີ ຄຳ ແນະ ນຳ ສຳ ລັບແກ້ໄຂຂໍ້ຜິດພາດການເຊື່ອມຕໍ່ MySQL ຂ້າງເທິງບໍ? ໃຫ້ພວກເຮົາຮູ້ໂດຍການລົງ ຄຳ ເຫັນຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.