Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получите достъп до уеб услуга на MySQL база данни през LAN?

Ако това е MySQL, свързването в мрежа на сървъра на базата данни не е активирано по подразбиране. За да активирате работата в мрежа в MySQL, трябва да намерите активния конфигурационен файл на MySQL с име my.cnf . И го редактирайте.

Ще обясня как да направя това в Ubuntu 12.04, но инструкциите са подобни за повечето инсталирания на Linux.

Активиране на MySQL Networking

Първо отворете файла с помощта на редактор като nano . Може да се наложи да изпълните командата чрез sudo :

sudo nano /etc/mysql/my.cnf

След това потърсете областта във вашия конфигурационен файл с bind-address опция:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

Сега променете този bind-address настройка на следното:

bind-address            = 0.0.0.0

След това запазете файла и рестартирайте MySQL по следния начин:

sudo service mysql restart

И сега вашата MySQL база данни ще може да приема връзки, различни от локален хост от отдалечени машини.

Уверете се, че портът MySQL 3306 е отворена

Въпреки това, дори и при активирана работа в мрежа, все пак трябва да проверите дали можете да се свържете с отдалечената машина от командния ред с помощта на мрежов инструмент като nmap . Може да имате защитна стена на 192.168.1.10 блокиране на MySQL порт 3306 така че трябва да проверите дали е отворен или затворен по следния начин:

nmap 192.168.1.10 -p3306

И ако порт 3306 е отворен, това ще бъде отговорът; обърнете внимание на open под STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE SERVICE
3306/tcp open  mysql

Но ако порт 3306 е затворен, ще получите това; обърнете внимание на closed под STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE  SERVICE
3306/tcp closed mysql

Проверете вашите MySQL User Grants

След като всичко е готово, вашият MySQL сървър на база данни трябва да бъде достъпен в мрежата. Но това каза, трябва да се уверите, че потребителят на вашата база данни, който използвате, има право да се свързва от отдалечена машина във вашата LAN. Така че влезте в MySQL и изпълнете тази команда, за да видите какви разрешения може да има потребителят:

SELECT user, host FROM `mysql`.`user`;

Това ще ви покаже списък с потребители и хостове, свързани с тези потребители в MySQL. Работата е там, че на повечето потребители се предоставят привилегии за достъп само до localhost или 127.0.0.1 . На някои е предоставен хост с заместващ знак % . Трябва да погледнете този списък и да видите дали потребителят, който искате да използвате, има заместващ хост (% ) или конкретен IP адрес, свързан с тях. Можете да проверите GRANT на потребителя s като пуснете линия като тази; разбира се променете [your_database_user] и [hostname] за да съответства на вашите настройки:

SHOW GRANTS FOR '[your_database_user]'@'[hostname]';

Това трябва да ви покаже списък с наличните GRANT s за потребител на конкретен хост. Ако имат GRANT s, които биха позволили отдалечен достъп – като например използване на заместващ знак % хост — тогава сте готови. Ако нямат GRANT s можете да изпълнявате следните MySQL команди; разбира се променете [your_database] и [your_database_user] за да съответства на вашите настройки:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;

И двете GRANT линии прилагат доста стандартен набор от права за достъп до база данни. Първият ред ги прилага към всяка връзка в обхвата на LAN мрежата от 192.168.x.x . Вторият ред ги прилага към всяка връзка в обхвата на LAN мрежата от 10.x.x.x . Обичам да правя това, за да покрия всички бази във вътрешните мрежи. Последните FLUSH PRIVILEGES; линия основно казва на MySQL да презареди таблиците с привилегии на потребителя, които позволяват на тези разрешения да влязат в сила.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP + MySQL опашка

  2. MySQL еквивалент за слушане на известие

  3. Резултатите от MYSQL заявка са отпечатани два пъти с помощта на PDO

  4. Разбиране на MySQL key_len в Explain Statement

  5. Инсталиране на MySQLdb на Mac OS X