Dit zou doodeenvoudig moeten zijn, maar ik kan niethet werkend krijgen voor mijn leven.
Ik probeer gewoon op afstand verbinding te maken met mijn MySQL-server.
- Verbinden als:
mysql -u root -h localhost -p
- werkt prima, maar proberen:
mysql -u root -h 'any ip address here' -p
- faalt met de fout:
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
In de tabel mysql.user
staat precies dezelfde invoer voor gebruiker ‘root’ met host ‘localhost’ als een andere met host ‘%’.
Ik ben ten einde raad en heb geen idee hoe ik verder moet.
Alle ideeën zijn welkom.
Antwoord 1, autoriteit 100%
Mogelijk een veiligheidsmaatregel. U kunt proberen een nieuw beheerdersaccount toe te voegen:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
Hoewel Pascal en anderen hebben opgemerkt, is het geen goed idee om een gebruiker met dit soort toegang open te stellen voor elk IP-adres. Als je een beheerder nodig hebt, gebruik dan root en laat het op localhost staan. Geef voor elke andere actie precies de privileges op die je nodig hebt en beperk de toegankelijkheid van de gebruiker zoals Pascal hieronder suggereert.
Bewerken:
Vanaf de MYSQL FAQ:
Als je niet kunt achterhalen waarom je krijgt
Toegang geweigerd, uit de gebruiker verwijderen
Tabel Alle vermeldingen die gastheer hebben
Waarden met jokertekeningen (vermeldingen
die ‘%’ of ‘_’-tekens bevatten). EEN
Zeer veel voorkomende fout is om een nieuw te plaatsen
toegang met host = ‘%’ en
Gebruiker = ‘some_user’, denkend dat dit
Hiermee kunt u localhost opgeven
Maak verbinding met dezelfde machine. De
Reden dat dit niet werkt is dat
De standaardrechten omvatten een
toegang met host = ‘localhost’ en
Gebruiker = ”. Omdat die vermelding een gastheer heeft
waarde ‘localhost’ die meer is
specifiek dan ‘%’, wordt het gebruikt in
voorkeur aan de nieuwe invoer wanneer
Verbinden van localhost! Het juiste
procedure is om een tweede item in te voegen
met host = ‘localhost’ en
Gebruiker = ‘some_user’ of om de
toegang met host = ‘localhost’ en
Gebruiker = ”. Na het verwijderen van de invoer,
Vergeet niet om een flush-privileges uit te geven
Verklaring om de subsidie-tabellen opnieuw te laden.
Zie ook paragraaf 5.4.4, “Toegang
Controle, fase 1: verbinding
Verificatie “.
Antwoord 2, Autoriteit 33%
Men moet een new MySQL User
maken en privileges toewijzen zoals hieronder in Query prompt
Via PHPMYADMIN of opdrachtprompt:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Eenmaal klaar met alle vier vragen, zou het verbinding moeten maken met username / password
Antwoord 3, Autoriteit 14%
Mijn foutmelding was vergelijkbaar en zei ‘host xxx mag geen verbinding maken met deze MySQL-server ‘, ook al gebruikte ik root. Hier is hoe u ervoor te zorgen dat root de juiste machtigingen heeft.
My Setup :
- ubuntu 14.04 lts
- mysql v5.5.37
oplossing
- Open het bestand onder ‘ETC / MYSQL / MY.CNF’
-
Controleer op:
- poort (standaard is dit ‘poort = 3306’)
- BIND-ADRES (standaard is dit ‘Bind-adres = 127.0.0.1’; als u wilt openen voor iedereen, reageer deze regel dan gewoon. Voor mijn voorbeeld zal ik zeggen dat de daadwerkelijke server op 10.1 is. 1.7)
-
Toegang nu toegang tot de MySQL-database op uw werkelijke server (zeg dat uw extern adres 123.123.123.123 is op poort 3306 als gebruiker ‘root’ en ik wil de machtigingen op de database ‘DATEENTRY’ wijzigen. Vergeet niet om het IP-adres te wijzigen , Poort en database-naam naar uw instellingen)
mysql -u root -p Enter password: <enter password> mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password'; mysql>FLUSH PRIVILEGES; mysql>exit
-
SUDO SERVICE MYSQLD RESTART
- moet u nu op afstand kunnen maken met uw database. Ik gebruik bijvoorbeeld MySQL Workbench en Putting In ‘Hostname: 10.1.1.7’, ‘Poort: 3306’, ‘Gebruikersnaam: Root’
Antwoord 4, Autoriteit 9%
Voer gewoon de volgende stappen uit:
1A) Maak verbinding met MySQL (via localhost)
mysql -uroot -p
1B) Als de MySQL-server in Kubernetes (K8S) wordt uitgevoerd en via een NODPORT
wordt geopend
kubectl exec -it [pod-name] -- /bin/bash
mysql -uroot -p
-
Maak gebruiker
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
-
Grant-machtigingen
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
-
Flush-privileges
FLUSH PRIVILEGES;
Antwoord 5, Autoriteit 8%
U moet toegang verlenen aan de gebruiker vanaf elke hostnaam.
Dit is hoe u nieuw voorrecht toevoegt van PHPMYADMIN
Goto-privileges & GT; Voeg een nieuwe gebruiker toe
Selecteer Elke host voor de gewenste gebruikersnaam
Antwoord 6, Autoriteit 3%
Het bericht *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
is een antwoord van de MySQL-server naar de MySQL-client. Merk op hoe het het IP-adres retourneert en niet de hostnaam.
Als u probeert verbinding te maken met mysql -h<hostname> -u<somebody> -p
En het retourneert dit bericht met het IP-adres, dan kan de MySQL-server geen omgekeerde opzoek doen op de client. Dit is van cruciaal belang, want dat is hoe het de MySQL-client naar de subsidies kaarten.
Zorg ervoor dat u een nslookup <mysqlclient>
van de MySQL Server. Als dat niet werkt, is er geen invoer in de DNS-server. U kunt ook een vermelding plaatsen in het hosts-bestand van de MySQL Server (<ipaddress> <fullyqualifiedhostname> <hostname>
& LT; – De volgorde hier zou er toe doen).
Een item in het hostbestand van mijn server, waardoor een reverse opzoeking van de MySQL-client dit zeer probleem heeft opgelost.
Antwoord 7, Autoriteit 3%
Eenvoudige manier:
Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD';
dan
FLUSH PRIVILEGES;
klaar!
Antwoord 8, autoriteit 2%
Als u de toekenningstabellen handmatig wijzigt (met INSERT, UPDATE, enz.), moet u uitvoeren
een FLUSH PRIVILEGES
-instructie om de server te vertellen de toekenningstabellen opnieuw te laden.
PS: Ik zou niet aanraden om elkehost toe te staan verbinding te maken voor elkegebruiker (vooral niet voor het gebruik van root
). Als u mysql gebruikt voor een client/server-toepassing, geeft u de voorkeur aan een subnetadres. Als je mysql gebruikt met een webserver of applicatieserver, gebruik dan specifieke IP’s.
Antwoord 9
Dit werkt voor elke toekomstige mysql-verbinding op afstand!
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Navigeer naar de regel die begint met de bind-address-instructie. Het zou er zo uit moeten zien:
bind-address = 0.0.0.0
Log in op uw mysql als root-terminal
mysql -u root -p
-- root password
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Verleen die machine eindelijk exclusieve toestemming om op afstand verbinding te maken met de database met het volgende commando.
sudo ufw allow from remote_IP_address to any port 3306
Antwoord 10
Gebruik gewoon de interface van MySql’s GUI Tool (SQLyog):
Als je nu toegang wilt verlenen VOOR ENIGE ANDERE PC op afstand, zorg er dan voor dat, net als in de onderstaande afbeelding, de waarde van het Host-veld % is (wat het jokerteken is)
Antwoord 11
De meeste antwoorden hier laten zien dat u gebruikers maakt met twee hostwaarden: één voor localhost
en één voor %
.
Houd er rekening mee dat u dit niet hoeft te doen, behalve voor een ingebouwde localhost-gebruiker zoals root. Als u gewoon een nieuwe gebruiker wilt maken die overal kan inloggen, kunt u gebruik maken van
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;
en het zal prima werken. (Zoals anderen al hebben gezegd, is het een slecht idee om beheerdersrechten toe te kennen aan een gebruiker van een willekeurig domein.)
Antwoord 12
Een eenvoudige manier is om in te loggen op phpmyadmin met root-account, daar naar de mysql-database te gaan en de gebruikerstabel te selecteren, daar het root-account te bewerken en in het hostveld % wildcard toe te voegen. en dan via ssh flush-privileges
FLUSH PRIVILEGES;
Antwoord 13
Nou, niets van het bovenstaande antwoord werkte voor mij. Na veel zoeken heb ik een oplossing gevonden. Hoewel ik misschien te laat ben, kan dit anderen in de toekomst helpen.
Log in op uw SQL-server vanaf een terminal
mysql -u root -p
-- root password
GRANT ALL ON *.* to root@'XX.XXX.XXX.XX' IDENTIFIED BY 'password';
Dit zou het toestemmingsprobleem moeten oplossen.
Veel plezier met coderen!!
Antwoord 14
Als dit een recente mysql-installatie is, probeer dan, voordat u iets anders wijzigt, deze opdracht uit te voeren en probeer het opnieuw:
flush privileges;
Dit alleen al lost het probleem voor mij op Ubuntu 16.04, mysql 5.7.20 op. YMMV.
Antwoord 15
Zoek gewoon een betere manier om dat te doen vanuit uw hostingconfiguratiescherm (ik gebruik hier DirectAdmin)
ga gewoon naar de doelserver-DB in uw configuratiescherm, in mijn geval:
MySQL-beheer -> selecteer uw DB -> u zult vinden: “Access Hosts”, voeg eenvoudig uw externe host hier toe en het werkt nu!
Ik denk dat er een vergelijkbare optie is op andere C.panels zoals plesk, enz..
Ik hoop dat het ook voor jou nuttig was.
Antwoord 16
Als u toevallig op Windows gebruikt; Een eenvoudige oplossing is om de configuratiewizard MySQL Server-instantie-instantie uit te voeren. Het staat in uw MySQL-groep in het menu Start. Klik op de tweede van het laatste scherm op het vakje dat zegt “Sta root-toegang vanuit externe machines toe”.
Antwoord 17
Als u WAMP Server + Windows 10 hebt en u deze gebruikt voor ontwikkeling dan met de rechtermuisknop op Wamp-pictogram = & GT; Wamp Settings
= & GT; Check Allow Virtual Hosts other than 127*
Antwoord 18
Nou wat u kunt doen is gewoon het MySQL.CFG-bestand openen en u moet hiermee een bindadres wijzigen
bind-adres = 127.0.0.1
en start vervolgens MySQL opnieuw en u kunt die server hierop aansluiten.
Kijk hierop kunt u een idee hebben dat.
Antwoord 19
Dit antwoord kan iemand helpen …
Al deze antwoorden hielpen niet, toen besefte ik dat ik het vergat één cruciaal ding te controleren .. de poort 🙂
Ik heb MySQL in een Docker Container die op een andere poort wordt uitgevoerd. Ik wijst naar mijn hostmachine op poort 3306, waar ik een MySQL-server op heb. Mijn container legt de server bloot op poort 33060. Dus al deze keer keek ik naar de verkeerde server! DOH!
Antwoord 20
Dit werkt voor DirectAdmin ;
- Ga naar uw
DirectAdmin
. - Ga naar uw
MySQL Management
. - Selecteer uw
database
. - onder uw
Accesse Host
Tabblad, er is een veld.
U moet dit veld invullen metxxx.xx.xxx.xx
. - Klik op
Add Host
.
Klaar. Nu hebt u toegang tot deze DB met uw your_database_username
& your_database_password
.
Zo simpel!
Antwoord 21
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
deze fout omdat er geen wachtwoord voor de root is, en dit is mogelijk opgetreden bij u toen u van buitenaf verbinding probeerde te maken.
Antwoord 22
CPANEL-oplossing
Ga naar Cpanel, zoek naar Remote MySQL.
Voeg het IP-adres toe in het invoerveld:
Host (% wildcard is toegestaan)
Reageer om te onthouden welk IP-adres dat is.
Dat was het voor mij.
Antwoord 23
Ik had ook met hetzelfde probleem te maken. Het loste voor mij op in 2 minuten, ik heb gewoon een witte lijst met ip via cpanel
Stel dat u verbinding probeert te maken met de database van server B vanaf server A.
Ga naar Server B Cpanel->Remote MySQL-> voer Server A IP-adres in en dat is het.
Antwoord 24
Als u MySQL WorkBench gebruikt, kunt u dit eenvoudig bereiken:
Hierna ben je klaar om te gaan. Als u vervolgens uw configuratie wilt verfijnen, kunt u het tabblad “Beheerdersrollen” gebruiken om de opdracht in te stellen die door de gebruiker kan worden gebruikt (SELECT, ALTER enz.) en het tabblad “Schemaprivileges” om de gebruikersinteractie te beperken tot specifieke schema’s.
Antwoord 25
Probleem: root@localhost kan geen verbinding maken met een nieuwe installatie van mysql-community-server op openSUSE 42.2-1.150.x86_64.
Mysql weigert verbindingen – punt uit.
Oplossing:
$ ls -l /var/lib/mysql/mysql/user.*
-rw-rw---- 1 mysql mysql 0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD
-rw-rw---- 1 mysql mysql 1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI
-rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frm
Bestandsgebruiker.MYD heeft 0 grootte(echt waar?!).
Ik heb alle 3 de bestanden gekopieerd van een ander werkend systeem.
$ /usr/sbin/rcmysql stop
$ cd /var/lib/mysql/mysql/
$ scp root@othersytem:/var/lib/mysql/mysql/user.* ./
$ /usr/sbin/rcmysql start
$ cd -
$ mysql -u root -p
Ik kon inloggen. Daarna was het een kwestie van alle schemarechten opnieuw toepassen.
Als je IPv6 hebt uitgeschakeld, schakel het dan tijdelijk opnieuw in, zodat root@::1-account ook kan werken.
Antwoord 26
Als je een mysql-query probeert uit te voeren zonder de connectionstring te definiëren, krijg je deze foutmelding.
Waarschijnlijk bent u vergeten de verbindingsreeks te definiëren voordat u deze uitvoert. heb je dit nagekeken?
(sorry voor slecht Engels)
Antwoord 27
Alle antwoorden hier werkten niet in mijn geval, dus ik ga ervan uit dat dit andere gebruikers in de toekomst kan helpen. Dit kan ook een probleem zijn in onze code, niet alleen in MySQL alleen.
Als u VB.NET
gebruikt
In plaats van deze code:
Dim server As String = My.Settings.DB_Server
Dim username As String = My.Settings.DB_Username
Dim password As String = My.Settings.DB_Password
Dim database As String = My.Settings.DB_Database
MysqlConn.ConnectionString = "server=" & server & ";" _
& "user id=" & username & ";" _
& "password=" & password & ";" _
& "database=" & database
MysqlConn = New MySqlConnection()
U moet MysqlConn = New MySqlConnection()
op de eerste regel verplaatsen. Dus het zou zo zijn
MysqlConn = New MySqlConnection()
Dim server As String = My.Settings.DB_Server
Dim username As String = My.Settings.DB_Username
Dim password As String = My.Settings.DB_Password
Dim database As String = My.Settings.DB_Database
MysqlConn.ConnectionString = "server=" & server & ";" _
& "user id=" & username & ";" _
& "password=" & password & ";" _
& "database=" & database