Mam problem z użytkownikiem innym niż root / admin mysql, wykonuję poniższe kroki, aby utworzyć użytkownika i jego uprawnienia, popraw mnie, jeśli robię źle,
Instaluję mysql
na RHEL 5.7 64bit
, pakiety są wymienione poniżej, kiedy już to zrobię, rpm install
jesteśmy
- tworzenie bazy danych mysql za pomocą
mysql_install_db
, a następnie - uruchomienie usługi mysql
- używając
mysql_upgrade
również robimy na serwerze.
Po tym procesie mogę zalogować się jako root
użytkownik inny niż root, ale nie mogę zalogować się na serwer:
[root@clustertest3 ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5
[root@clustertest3 ~]# 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
[root@clustertest3 ~]# 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() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
[root@clustertest3 ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)
Oto problem, przed którym stoję, czy jest jakieś rozwiązanie?
mysql
mysql-error-1045
user3061726
źródło
źródło
SELECT * FROM mysql.user
Odpowiedzi:
Nie nadawaj wszystkich uprawnień do wszystkich baz danych użytkownikowi innemu niż root, nie jest to bezpieczne (a masz już "root" z tą rolą)
GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Ta instrukcja tworzy nowego użytkownika i przyznaje mu wybrane uprawnienia. TO ZNACZY:
GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Zapoznaj się z dokumentacją, aby zobaczyć szczegółowe informacje na temat wszystkich uprawnień
EDYCJA: możesz poszukać więcej informacji za pomocą tego zapytania (zaloguj się jako „root”):
select Host, User from mysql.user;
Aby zobaczyć, co się stało
źródło
Jeśli łączysz się z MySQL za pomocą komputera zdalnego (przykładowe środowisko pracy) itp., Wykonaj następujące kroki, aby wyeliminować ten błąd w systemie operacyjnym, na którym jest zainstalowany MySQL
mysql -u root -p CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>'; GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%'; FLUSH PRIVILEGES;
Spróbuj zalogować się do instancji MYSQL.
Pomogło mi to wyeliminować ten błąd.
źródło
Próbować:
CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost'; FLUSH PRIVILEGES;
Lub jeszcze lepiej:
mysql_setpermission
aby stworzyć użytkownikaźródło
%
co powinno działać dla wszystkich hostów, nie rozwiązuje tego problemu. Więc określając,localhost
że powinno działać. Jeśli to NIE działa, coś jest nie tak w mysqlWygląda na to, że próbujesz ustawić użytkownika jako „złoty” @ „%”, ale inny użytkownik o nazwie „złoty” @ „localhost” przeszkadza / ma pierwszeństwo.
Wykonaj to polecenie, aby zobaczyć użytkowników:
SELECT user,host FROM mysql.user;
Powinieneś zobaczyć dwa wpisy:
1) użytkownik = złoty, host =%
2) użytkownik = złoty, host = localhost
Wykonaj następujące polecenie:
DROP User 'golden'@'localhost'; DROP User 'golden'@'%';
Uruchom ponownie MySQL Workbench.
Następnie ponownie wykonaj oryginalne polecenia:
CREATE USER 'golden'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Następnie, gdy próbujesz zalogować się do MySQL, wpisz to w ten sposób:
Kliknij „Testuj połączenie” i wprowadź swoje hasło „hasło”.
źródło
Najpierw utworzyłem użytkownika za pomocą:
CREATE user user@localhost IDENTIFIED BY 'password_txt';
Po wygooglowaniu i obejrzeniu tego zaktualizowałem hasło użytkownika za pomocą:
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
a później mogłem się połączyć.
źródło
Dla każdego, kto wykonał wszystkie rady, ale problem nadal występuje.
Sprawdź procedurę składowaną i wyświetl DEFINERS. Ci definicyjni mogą już nie istnieć.
Mój problem pojawił się, gdy zmieniliśmy hosta wieloznacznego (%) na specyficzny dla adresu IP, dzięki czemu baza danych jest bezpieczniejsza. Niestety, są pewne widoki, które nadal używają „user” @ „%”, mimo że „user” @ „172 ....” jest technicznie poprawne.
źródło
Ja też mam podobny problem, a później stwierdziłem, że to dlatego, że zmieniłem nazwę hosta (nie
localhost
).Dlatego rozwiązuję to, określając rozszerzenie
--host=127.0.0.1
mysql -p mydatabase --host=127.0.0.1
źródło
W zależności od sposobu tworzenia użytkownika MySQL interpretuje w inny sposób. Na przykład, jeśli utworzysz takiego użytkownika:
create user user01 identified by 'test01';
MySQL oczekuje, że nadasz pewne przywileje przy użyciu
grant all on <your_db>.* to user01;
Nie zapomnij
flush privileges;
Ale jeśli utworzysz takiego użytkownika (przekazując adres IP), musisz go zmienić na:
create user 'user02'@'localhost' identified by 'teste02';
więc, aby nadać pewne uprawnienia, musisz to zrobić:
grant all on <your_db>.* to user02@localhost; flush privileges;
źródło
Upewnij się, że użytkownik ma wpis localhost w tabeli użytkowników. To był problem, który miałem. DAWNY:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
źródło
Irytujące wyszukiwanie, które pojawia się po wyszukaniu tego komunikatu o błędzie:
Dla mnie problemem nie było umieszczenie hasła w cudzysłowie. na przykład. Musiałem użyć
-p'password'
zamiast-ppassword
źródło
W moim przypadku ten sam błąd występuje, ponieważ próbowałem użyć mysql, wpisując po prostu „mysql” zamiast „mysql -u root -p”
źródło
podłącz swój serwer z mysqlworkbench i uruchom to polecenie-> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'yourpassword';
źródło
Po prostu dodaj nazwę komputera zamiast „localhost” w nazwie hosta lub adresie hosta MySQL.
źródło