För att exponera MySQL för något annat än localhost måste du ha följande rad
För mysql version 5.6 och senare
okommenterad i /etc/mysql/my.cnf
och tilldelas din dators IP-adress och inte loopback
För mysql version 5.7 och senare
okommenterad i /etc/mysql/mysql.conf.d/mysqld.cnf
och tilldelas din dators IP-adress och inte loopback
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
Eller lägg till enbind-address = 0.0.0.0
om du inte vill ange IP
Stoppa sedan och starta om MySQL med den nya my.cnf-posten. När du har kört, gå till terminalen och skriv in följande kommando.
lsof -i -P | grep :3306
Det borde komma tillbaka ungefär så här med din faktiska IP i xxx's
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
Om ovanstående uttalande returneras korrekt kommer du att kunna acceptera fjärranvändare. Men för att en fjärranvändare ska kunna ansluta med rätt privilegier måste du ha den användaren skapad i både localhost och '%' som i.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
sedan,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
och slutligen,
FLUSH PRIVILEGES;
EXIT;
Om du inte har skapat samma användare som ovan, när du loggar lokalt kan du ärva basbehörighet för lokala värdar och få åtkomstproblem. Om du vill begränsa åtkomsten som minanvändare har måste du läsa om GRANT-satsens syntax HÄR Om du kommer igenom allt detta och fortfarande har problem, skriv några extra felmeddelanden och de lämpliga my.cnf-raderna.
OBS:Om lsof inte återvänder eller inte hittas kan du installera det HÄR baserat på din Linux-distribution. Du behöver inte lsof för att få saker att fungera, men det är extremt praktiskt när saker och ting inte fungerar som förväntat.
UPPDATERING:Om även efter att du har lagt till/ändrat bind-address
i my.cnf
inte fungerade, gå sedan och ändra det på den plats det ursprungligen deklarerades:
/etc/mysql/mariadb.conf.d/50-server.cnf