Sziasztok!
Ma telepítettem Ubuntu 12.4-re apache, php, mysql-t. MySQL-hez feltettem a phpMyAdmin-t. A phpMyAdmin-ba root felhasználóval be tudok jelentkezni.
Létrehoztam felhasználókat, akiknek adatok és szerkezetre teljes joguk van adminisztrációs joguk viszont egy se.
A problémám, hogy ezek a felhasználók nem tudnak bejelentkezni a phpMyAdmin felületre. 1045-ös hibát dob. Mi lehet a probléma?
- 6085 megtekintés
Hozzászólások
Konzolból ha localhostra bejelentkezel a userekkel az működik?
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Kipróbáltam, nem. Root-al viszont beenged ott is.
kisspepe@Hermesz:~$ mysql -u kisspepe -h localhost -p
Enter password:
ERROR 1045 (28000): Access denied for user 'kisspepe'@'localhost' (using password: YES)
- A hozzászóláshoz be kell jelentkezni
akkor bezony nincs hol hozzáadva a user mysql-ben :)
mysql konzolból select * from mysql.user; mit mond?
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Kilistázott 37 sort.
Kilistázta a felhasználóneveket amiket felvettem, köztük azt is, akivel megpróbáltam bejelentkezni.
- A hozzászóláshoz be kell jelentkezni
Ha bemásolnád többre mennénk :), amúgy annyi a gond valószínűleg, hogy localhostra nincs jogosultságuk... (host mező)
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
A lekérdezés eredményének egy sora, bár nem a legolvashatóbb:
|
| % | kisspepe | *ADE7573ACAABCAA5317806EB3GB6BE74D6E9F285 | Y | Y | Y | Y | Y | Y | N | N | N | Y | N | N | Y | Y | N | N | Y | N | Y | N | N | Y | Y | Y | Y | N | Y | Y | N | | | | | 0 | 0 | 0 | 0 | | NULL
phpMyAdmin-ba pedig így néz ki:
kisspepe % Igen SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE Nem
Az utolsó nem-nek az oszlopa az, hogy engedélyezés, de sehol nem találtam meg, hogy azt hol állíthatom igen-re, nem tudom ez lehet-e gond.
- A hozzászóláshoz be kell jelentkezni
Egy ilyet kipróbálnál:
CREATE USER 'valaki'@'localhost' IDENTIFIED BY 'valaki123';
GRANT ALL PRIVILEGES ON *.* TO 'valaki'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
azután belépni a valaki userrek a phpmyadminba?
(itt minden jogosultsága lesz, ezt érdemes szűrni a későbbiekben...)
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Igen az így létrehozott felhasználóval be tudtam jelentkezni.
Az a kérdés, hogy a többi felhasználónak mi lehet a dolga, ugyanis 25 felhasználót így létrehozni újra kicsit macerás.
- A hozzászóláshoz be kell jelentkezni
Próbáld egyet localhostra is hozzáadni ugyanazzal a joggal, és kipróbálni hogy úgy megy-e..
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Igen, ha localhost-ra van állítva, akkor beenged, ha visszaállítom all-ra akkor nem.
A gond az, hogy a felhasználók nem localhost-on jelentkeznek be.
- A hozzászóláshoz be kell jelentkezni
de a phpmyadmin localhoston fut gondolom :)))
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Értem, tehát ok, hogy másik gépen nyitom meg a phpmyadmint, a bejelentkezés akkor is localhoston történik.
Ez végülis logikus, és akkor jó is lesz, ha mindet átállítom localhostra, de azt viszont akkor sem értem, ha az van beállítva, hogy bárhonnan bejelentkezhet, akkor localhoston miért nem?
- A hozzászóláshoz be kell jelentkezni
"The % host wildcard doesn't match 'localhost'. By default the mysql client will try to connect via a socket rather than tcp (usually some place like /var/lib/mysql/mysql.sock). You can either change your grant to 'a'@'localhost', or force the client to operate over the TCP stack like
mysql -u a -p --proto=TCP"
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Ok, köszönöm a segítséget. Sokat segítettél.
- A hozzászóláshoz be kell jelentkezni
Csak zárójelben jegyzem meg attól függetlenül, hogy megoldódott.
A userek "hostjai" ha minden igaz a mysql adatbázis user táblájában tárolódnak.
Pl érdemes lefuttatni egy ilyet erre a táblára:
select user,host,password from user;
eredmény kb ilyesmi lesz:
mysql> select user,host,password from user;
+-----------------+-----------+-------------------------------------------+
| user | host | password |
+-----------------+-----------+-------------------------------------------+
| root | localhost | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| root | 127.0.0.1 | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| root | ::1 | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| user1 | localhost | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| user2 | % | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| user3 | | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
Azaz ahol nem például localhost vagy 127.0.0.1 az érték, ott arra állítod, nyomsz egy "flush privileges"-t utána és kész is. Semmi extrát nem kell utána elvileg állítani.
A grant-al az is megadható, hogy helyileg "A" jelszót távolról pedig "B" jelszót használjon a delikvens.
pl:
grant select, insert... on db1.* to 'user1'@'localhost' identified by 'secretA';
grant select, insert... on db1.* to 'user1'@'127.0.0.1' identified by 'secretB';
grant select, insert... on db1.* to 'user1'@'192.168.0.111' identified by 'secretC';
(persze a 3-ik sor esetében a mysql-nek nem csak localhost-ot kell figyelnie, hanem 0.0.0.0:3306-n)
De javítsanak ki az okosok, ha nagy hülyeséget mondtam volna :)
- A hozzászóláshoz be kell jelentkezni