Ik ben voor een probleem met MySQL Non Root / Admin-gebruiker, ik volg de onderstaande stappen voor het maken van gebruiker en zijn privileges, corrigeer me als ik het fout doe,
Ik installeer mysql
op RHEL 5.7 64bit
, Pakketten worden hieronder vermeld, zodra ik de rpm install
Wij zijn
- MySQL DB maken met
mysql_install_db
, Dan - Start de MySQL-service dan
- met
mysql_upgrade
Ook doen we het met de server.
Na dit proces kan ik inloggen als root
, maar met een niet-rootgebruiker kan ik me niet aanmelden bij de server:
[[email protected] ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5
[[email protected] ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[[email protected] ~]# ls -ld /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Nov 30 11:09 /var/lib/mysql/mysql.sock
mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT USER(),CURRENT_USER();
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| [email protected] | [email protected] |
+----------------+----------------+
1 row in set (0.00 sec)
[[email protected] ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)
Dit is het probleem waarmee ik te maken heb, is hier een oplossing voor?
Antwoord 1, autoriteit 100%
Verleen niet alle rechten over alle databases aan een niet-rootgebruiker, het is niet veilig (en je hebt al “root” met die rol)
GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Deze instructie maakt een nieuwe gebruiker aan en verleent hem geselecteerde privileges.
IE:
GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Bekijk de docsom alle privileges gedetailleerd te zien
EDIT: je kunt meer informatie zoeken met deze zoekopdracht (log in als “root”):
select Host, User from mysql.user;
Om te zien wat er is gebeurd
Antwoord 2, autoriteit 64%
Als u verbinding maakt met de MySQL via een externe machine (voorbeeld workbench), enz., gebruikt u de volgende stappen om deze fout te elimineren op het besturingssysteem waarop MySQL is geïnstalleerd
mysql -u root -p
CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;
Probeer logging in de MySQL-instantie.
Dit werkte voor mij om deze fout te elimineren.
Antwoord 3, Autoriteit 45%
Probeer:
CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;
Of nog beter gebruik te maken: mysql_setpermission
om de gebruiker te maken
Antwoord 4, Autoriteit 25%
Het lijkt erop dat je probeert om een gebruiker ‘gouden’ @ ‘%’, maar een andere gebruiker te maken door de naam van de ‘gouden’ @ ‘localhost’ is in de weg / heeft voorrang.
Doe deze opdracht aan de gebruikers te zien:
SELECT user,host FROM mysql.user;
U moet twee ingangen zien:
1) = user gouden, host =%
2) user = golden, host = localhost
Hebben deze Commando:
DROP User 'golden'@'localhost';
DROP User 'golden'@'%';
Restart MySQL Workbench.
Dan doe je oorspronkelijke commando’s weer:
CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Als je dan om te proberen aan te melden bij MySQL, typt u deze in als volgt:
Hit ‘Test Connection’ en voer uw wachtwoord ‘password’.
Antwoord 5, Autoriteit 17%
Eerst heb ik schiep de gebruiker met behulp van:
CREATE user [email protected] IDENTIFIED BY 'password_txt';
Na Googlen en het zien van dit, heb ik geüpdatet gebruikerswachtwoord met :
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
en ik kon daarna verbinding maken.
Antwoord 6, autoriteit 5%
Voor iedereen die al het advies heeft opgevolgd, maar het probleem blijft bestaan.
Controleer op opgeslagen procedure en bekijk DEFINERS. Die definities bestaan mogelijk niet meer.
Mijn probleem kwam naar voren toen we de wildcard-host (%) veranderden in IP-specifiek, waardoor de database veiliger werd. Helaas zijn er enkele weergaven die nog steeds ‘gebruiker’@’%’ gebruiken, hoewel ‘gebruiker’@’172….’ technisch correct is.
Antwoord 7, autoriteit 5%
Ik heb ook een soortgelijk probleem, en later ontdekte ik dat het komt doordat ik mijn hostnaam heb gewijzigd (niet localhost
).
Daarom krijg ik het opgelost door de --host=127.0.0.1
op te geven
mysql -p mydatabase --host=127.0.0.1
Antwoord 8, autoriteit 3%
Afhankelijk van de manier waarop u uw gebruiker aanmaakt, interpreteert MySQL een andere manier. Als u bijvoorbeeld een gebruiker als volgt aanmaakt:
create user user01 identified by 'test01';
MySQL verwacht dat je een bepaald privilege geeft met grant all on <your_db>.* to user01;
Vergeet niet om flush privileges;
Maar als u een dergelijke gebruiker aanmaakt (door een IP-adres door te geven), moet u dit wijzigen in:
create user 'user02'@'localhost' identified by 'teste02';
dus om bepaalde privileges te geven moet je dat doen:
grant all on <your_db>.* to [email protected];
flush privileges;
Antwoord 9, autoriteit 3%
Zorg ervoor dat de gebruiker een localhost-vermelding heeft in de gebruikerstabel. Dat was het probleem dat ik had. BIJV.:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Antwoord 10, autoriteit 2%
Voor vervelend zoeken om hier te komen na het zoeken naar deze foutmelding:
Toegang geweigerd voor gebruiker ‘[email protected]’ (met wachtwoord: YES)
Het probleem voor mij was dat ik het wachtwoord niet tussen aanhalingstekens zette. bijv. Ik moest -p'password'
gebruiken in plaats van -ppassword
Antwoord 11
In mijn geval trad dezelfde fout op omdat ik mysql probeerde te gebruiken door gewoon “mysql” te typen in plaats van “mysql -u root -p”
Antwoord 12
verbind uw server vanaf mysqlworkbench en voer dit commando uit->
ALTER GEBRUIKER ‘root’@’localhost’ GEDENTIFICEERD DOOR ‘yourpassword’;
Antwoord 13
Probeer dit:
Als u uw gebruiker al heeft aangemaakt, heeft u uw gebruiker mogelijk met het verkeerde wachtwoord aangemaakt.
Dus laat die gebruiker vallen en maak een andere gebruiker door dit te doen.
Om uw huidige gebruikers te zien.
SELECT Host,User FROM mysql.user;
De gebruiker verwijderen
DROP User '<your-username>'@'localhost';
Hierna kunt u de gebruiker opnieuw aanmaken met het juiste wachtwoord
CREATE USER '<your-username>'@'localhost' IDENTIFIED WITH mysql_native_password BY '<correct password>'
;
dan
FLUSH PRIVILEGES;
Het kan zijn dat je nog meer fouten tegenkomt bij het verkrijgen van toegang tot de database, als je die fout hebt, voer dit dan uit.
GRANT ALL PRIVILEGES ON *.* to '<your-username>'@'localhost';
Antwoord 14
De fout van ERROR 1045 (28000): Access denied for user
heeft misschien niet altijd te maken met problemen met rechten, maar met het feit dat er een ontbrekende -p
aan het einde van het commando:
# Will prompt us a mysql terminal in case there are no privilages issues
mysql -u root -p
# Will fail with the mentioned ERROR 1045
mysql -u root
Antwoord 15
Voeg gewoon de computernaam toe in plaats van ‘localhost’ in de hostnaam of het MySQL-hostadres.