PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : User root hat bei MySQL keine Rechte mehr ?!?



Stormsam
28.12.03, 14:21
HI @all,

hab nen dickes Problem, wenn ich mich als root bei phpMyAdmin einlogge hat dieser keine Rechte mehr!
Er hat die selben Rechte wie ein "normaler" User, d.h. er hat nur eine Datenbank (root) und kann die anderen nicht sehen. Er kann keine neue Datenbank anlegen, kann die mysql user nicht verwalten und auch nicht mysql neu starten.

Wie ist das möglich ?!? Kann man aus dem User root einen "normalen" user machen ?!? Wie kann man das wieder rückgängig machen?

Hoffe ihr könnt mir da weiterhelfen ;)

MfG
Stormsam

psy
28.12.03, 14:24
was hast du denn vorher gemacht oder gings von heut auf morgen nicht mehr?

Stormsam
28.12.03, 14:31
es ging plötzlich nicht!
Ich habe im Grunde nichts gemacht was mit mysql zu tun hat!

Man kann aber auf mysql auch auf außen zugreifen (internet) ...

LKH
28.12.03, 16:06
Hi,

im Grunde wirst du schon was gemacht haben (von nix kommt nix). Allerdings werden Änderungen der Benutzerpriviligien erst nach einem "GRANT PRIVILEGES" wirksam oder wenn man den MySQL-Server neu startet.

Wenn du von aussen noch Zugriff hast, wirf mal einen Blick in die mysql.user-Tabelle.

BTW: "root" unter MySQL ist nicht der System-root. Es wurde nur der gleiche Name für den Benutzer mit allen Rechten gewählt.

Opa Nolle
28.12.03, 19:55
Der Standard MySQL-Benutzer ist der MySQL-root Benutzer der als Superuser angelegt wird.Wobei das anfängliche root-Paßword leer ist. Also, kann sich jeder als 'root' anmelden! Um dem abzuhelfen sollte als erste Maßnahme ein root-Paßword erstellt werden (auf der Konsole):
mysql -u root mysql
mysql> update user set password=password('Dein Password') where user ='root';
mysql> flush privileges;
mysql> quit

Neu einwählen, und einen Benutzer erstellen der all das machen kann, was man zum Erstellen/Erlernen einer Datenbank eben so alles machen muß; ohne das man ständig an ein 'access denied' stößt.

Opa Nolle

PS: Du solltest Dich vielleicht mal mit dem 'monitor' anfreunden; wenigsten für die erste Zeit ;)

Stormsam
30.12.03, 20:05
hi,

das Problem ist nun das der mysql user root keine Rechte mehr hat!
Ich kann keinem anderen unser per phpmyadmin mehr rechte geben um die fehlermeldungen zu umgehen und kann auch nicht in die "mysql-konsole" per mysql -u root mysql ... da auch da root keine rechte hat!

Wie kann man das retten? Kann man da irgendwo von ganz vorne anfangen um z.b. den user root neu anzulegen?

MfG
Stormsam

zeeman
30.12.03, 23:25
1.)
root@% != root@localhost
2.)
du kannst die db ohne jegliche rechte starten, dann musst du das pw neu setzen, flushen und mysql wieder neustarten
such mal ebend den befehlt
schxxx
find das buch nicht
war irgendwas von
mysql stop
mysql --flush-privelges start (oder so ähnlich)
dann pw ändern (wie oben beschrieben)
mysql restart

so in etwa

Jasper
31.12.03, 00:48
Original geschrieben von zeeman

du kannst die db ohne jegliche rechte starten, dann musst du das pw neu setzen, flushen und mysql wieder neustarten
such mal ebend den befehlt
schxxx
find das buch nicht
war irgendwas von
mysql stop
mysql --flush-privelges start (oder so ähnlich)
dann pw ändern (wie oben beschrieben)
mysql restart

so in etwa

nicht ganz. mysqld muss mit '-Sg' gestartet werden. dann hat jeder user vollen zugriff. mit 'mysqladmin --flush-privileges' schaltet man dann das rechtesystem wieder ein. 'mysqladmin reload' geht natürlich auch.


-j

Stormsam
31.12.03, 14:52
HI@ all,

danke für eure HIlfe
das sieht shcon mal gut aus :)

Bevor ich das jetzt mal ausprobiere wollt ich noch kurz nachhacken:
1) Was bringt es jetzt das Passwort mit:
mysql> update user set password=password('Dein Password') where user ='root';
zu ändern?
Per phpMyAdmin kann ich mich als root einloggen, ich komme dann auch ins phpmyadmin rein und da kommt kein fehler: passwort falsch oder so was!
Das Problem ist nur das root da kaum rechte hat. Er kann nur seine eigene Datenbakn sehen( die datenbank root) und nicht alle datenbänke! Er kann mysql nicht neu starten, keine neue datenbank anlegen oder user verwalten!
Ich müßte irgendwie root die rechte neu geben können!
2) Wenn ich mysql nur mit -Sg starte haben dann alle User für immer alle rechte oder nur solange es mit -Sg gestartet ist und wenn ich es wieder normal starte haben die user wieder die alten rechte ?
3) Wenn ich es nun mit -Sg starte hat der User root ja alle rechte, wie kann ich ihm dann nocheinmal alle rechte geben, sodass es auch beim "normalen" starten von mysql noch wirksam ist?

MfG
Stormsam ;)

Jasper
31.12.03, 15:56
Original geschrieben von Stormsam
1) Was bringt es jetzt das Passwort mit:
mysql> update user set password=password('Dein Password') where user ='root';
zu ändern?
Ich müßte irgendwie root die rechte neu geben können!


sieh dir die einzelnen privilegien in der tabelle mysql.user an und ändere die rechte für root.



2) Wenn ich mysql nur mit -Sg starte haben dann alle User für immer alle rechte oder nur solange es mit -Sg gestartet ist und wenn ich es wieder normal starte haben die user wieder die alten rechte ?


wenn mysqld ohne -Sg gestartet wird, gelten wieder die normalen berechtigungen. man muss nicht neu starten, ein flush-privilege oder reload recht auch,



3) Wenn ich es nun mit -Sg starte hat der User root ja alle rechte, wie kann ich ihm dann nocheinmal alle rechte geben, sodass es auch beim "normalen" starten von mysql noch wirksam ist?


siehe oben. erteile root die gewünschten berechtigungen mit 'update' oder 'grant'.
-Sg schaltet nur das berechtigungssystem ab. nicht mehr. an den berechtigungen wird nichts geändert.


-j

Stormsam
31.12.03, 16:41
HI

danke für die infos ;)

wollte nun anfangen .. scheitere allerdings leider schon am ersten punkt.
Wie starte ich mysql mit -Sg ?

Habe mir das manuel durchgeguckt und es so eingegeben wie es dort stand:


linux:~ # /usr/sbin/mysqld -Sg
Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
031231 17:39:43 Aborting

031231 17:39:43 /usr/sbin/mysqld: Shutdown Complete


Normalerweise starte ich mysql auch nur mit dem befehl rcmysql start und dort kann man kein -Sg anhängen ;)
Wieso kommt da solch eine Fehlermeldung?

MfG
Stormsam

Jasper
31.12.03, 17:56
Original geschrieben von Stormsam
Wie starte ich mysql mit -Sg ?


als user 'mysql' nicht als 'root'.

su mysql -c '/pfad/zu/mysqld -Sg'


-j

Stormsam
31.12.03, 18:35
hi

bei
su mysql -c '/usr/sbin/mysqld -Sg'

springt er bei mir einfach nur in die nächste zeile (wo man dann den nächsten befehl eingeben kann)

Wenn ich es dann versuche :

linux:~ # mysql -u root mysql
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

das heißt schätze ich das er mysql nicht gestartet hat oder?

mfg
stormsam

Jasper
31.12.03, 20:00
Original geschrieben von Stormsam

bei
su mysql -c '/usr/sbin/mysqld -Sg'

springt er bei mir einfach nur in die nächste zeile (wo man dann den nächsten befehl eingeben kann)


ist mysqld auch wirklich das binary und nicht irgendein skript?

'file /usr/sbin/mysqld' sollte das herausfinden.


-j

Stormsam
31.12.03, 20:32
ich habe nur diese eine mysqld (laut whereis mysqld) das müßte das richtige sein!


linux:~ # file /usr/sbin/mysqld
/usr/sbin/mysqld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped


hilft dir das weiter?

Athluxpower
31.12.03, 20:37
http://www.mysql.com/doc/en/Resetting_permissions.html

http://www.mysql.com/doc/de/Resetting_permissions.html

Das müsste helfen... frohes neues noch ;)

Stormsam
10.01.04, 10:09
hi @all,
sry war ein paar Tage nicht da und konnte mich nicht melden.

@Athluxpower danke für die Webseiten, dort wird allerdings doch nur beschrieben wie man root ein neues Passwort geben kann.

kann man es auch so machen? Also würde am ende user root wieder rechte haben?

@Jasper brachte dir die ausgabe von file /usr/sbin/mysqld etwas?

Jasper
10.01.04, 11:51
Original geschrieben von Stormsam
ich habe nur diese eine mysqld (laut whereis mysqld) das müßte das richtige sein!


linux:~ # file /usr/sbin/mysqld
/usr/sbin/mysqld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped


hilft dir das weiter?

scheint das richtige zu sein. hmm, dann weiss ich auch nicht weiter, bei mir klappt das:

# su - mysql
$ /usr/libexec/mysqld -Sg
Cannot initialize InnoDB as 'innodb_data_file_path' is not set.
If you do not want to use transactional InnoDB tables, add a line
skip-innodb
to the [mysqld] section of init parameters in your my.cnf
or my.ini. If you want to use InnoDB tables, add to the [mysqld]
section, for example,
innodb_data_file_path = ibdata1:10M:autoextend
But to get good performance you should adjust for your hardware
the InnoDB startup options listed in section 2 at
http://www.innodb.com/ibman.html
/usr/libexec/mysqld: ready for connections

# mysql -u nobody
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.58

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>


keine berechtigungen mehr aktiv (sonst hätte das 'use mysql' als user nobody nicht geklappt.


-j

Stormsam
10.01.04, 15:23
hmm... ich habe noch ein wenig herum gespielt und bin mir nicht sicher ob ich mich mit su mysql einloggen kann. Den wenn ich als root eingeloggt bin und diesen befehl eingebe springt er einfach nur in die nächste zeile:


linux:~ # su mysql
linux:~ # su wwwrun
wwwrun@linux:/root>


bei wwwrun macht er ja was anderes als bei mysql ... woran kann das liegen?
Ich könnte jetzt als user wwwrun mich ja als mysql user einloggen, aber da fragt er nach einem passwort welches ich nicht kenne. Kann ich das Passwort von mysql (also vom systemuser) ändern oder darf man das nicht?

mfg
stormsam

Jasper
10.01.04, 18:40
Original geschrieben von Stormsam
hmm... ich habe noch ein wenig herum gespielt und bin mir nicht sicher ob ich mich mit su mysql einloggen kann. Den wenn ich als root eingeloggt bin und diesen befehl eingebe springt er einfach nur in die nächste zeile:


linux:~ # su mysql
linux:~ # su wwwrun
wwwrun@linux:/root>



user mysql hat bestimmt keine gültige shell. trag mal in /etc/passwd bei mysql eine gültige shell ein. aber nicht vergessen wieder rückgängig zu machen.


-j

Stormsam
10.01.04, 18:59
hi

danke nun scheint es zu funktionieren:


mysql@linux:/root> /usr/sbin/mysqld -Sg
/usr/sbin/mysqld: File './linux-bin.001' not found (Errcode: 13)
040110 19:52:54 Could not use linux-bin for logging (error 13)
040110 19:52:54 /usr/sbin/mysqld: Can't create/write to file '/var/linux.pid' (Errcode: 13)
/usr/sbin/mysqld: ready for connections


Doch er findet die Datenbänke nicht!


linux:~ # mysql -u root mysql
ERROR 1049: Unknown database 'mysql'


oder:


linux:~ # mysql -u nobody
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 118 to server version: 3.23.52-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
ERROR 1049: Unknown database 'mysql'


Weißt du wieso? So kann ich wieder nichts ändern ...

mfg
Stormsam

Jasper
10.01.04, 19:32
Original geschrieben von Stormsam

Weißt du wieso? So kann ich wieder nichts ändern ...


was war das doch gleich für eine distribution? damit ich weiss, was ich niemals nicht verwenden werde.

sieh dir mal das skript an, mit dem mysql normalerweise gestartet wird. da stehen vermutlich noch irgendwelche optionen beim aufruf.
in dem link von athluspower stand, wie man -Sg über das startskript setzt. ist in deinem fall besser als das binary direkt aufzurufen.


-j

Stormsam
10.01.04, 21:21
ich habe suse linux 8.2

wie kann ich mir das script anschauen? Ich starte mysql normalerweise einfach mit "rcmysql start"

Wie rufe ich das ganze den binary auf? Auf den zwei Seiten konnte ich eigentlich nicht viel finden.

Jasper
10.01.04, 22:12
Original geschrieben von Stormsam
ich habe suse linux 8.2

wie kann ich mir das script anschauen? Ich starte mysql normalerweise einfach mit "rcmysql start"


sieh unter /etc/init.d nach. da findest du das startskript von mysql (wenns suse nicht woanders versteckt hat).


-j

Stormsam
11.01.04, 11:20
Hi,

ja da gibts eine mysql datei, der start teil sieht glaube ich so aus :


case "$1" in
start)
# exit gracefully, if we are already running
checkproc $MYSQLD && echo -n "Starting service MySQL" && \
rc_status -v && rc_exit

# We assume a fresh install if the directory $datadir/mysql
# does not exist and create the privilege database
if test ! -d $datadir/mysql ; then
echo "Creating MySQL privilege database and starting MySQL..."
mysql_install_db --user=$mysql_daemon_user || rc_failed

# Fix ownerships and permissions for $datadir
chmod 755 $datadir
chown -R $mysql_daemon_user $datadir

$SAFE_MYSQLD \
--user=$mysql_daemon_user \
--pid-file=$pid_file \
--socket=$socket \
--datadir=$datadir &
sleep 2
test -S $socket || rc_failed
else
echo "Starting service MySQL"
$SAFE_MYSQLD \
--user=$mysql_daemon_user \
--pid-file=$pid_file \
--socket=$socket \
--datadir=$datadir &
sleep 2
test -S $socket || rc_failed
fi

# Rmember status and be verbose
rc_status -v
;;


da ändere ich ungerne etwas ;)
Hilft das weiter? Wäre mir wichtig das der user root wieder mehr rechte hat

MfG
Stormsam

Stormsam
12.01.04, 12:09
hi @all,

mir ist noch etwas aufgefallen:

Wenn ich mysqld mit -Sg starte und mich dann als root bei phpmyadmin einlogge, hat root zwar keine rechte aber er kann ein paar Datenbänke sehen dir zuvor nicht da waren.
Dort sind :
X11R6
adm
cache
games
lib
lock
log
mail
named
opt
run
spool
tmp
ucd-snmp

woher kommen diese auf einmal? Und wieso hat root trotz -Sg bei phpmyadmin keine rechte? und wo sind all meine alten Datenbänke und besonders die Datenbank "mysql" um die rechte zu ändern.

Wenn ich mysql wieder "normal" mit rcmysql starte ist wieder alles beim alten :(

MfG
Stormsam

Stormsam
14.01.04, 15:58
hi@all,

hat nicht noch jemand eine idee?

Ich kann mit einem user root mit kaum rechten nichts anfangen, wäre mir wichtig das das wieder läuft!

Soll ich alles neu installieren ?!? Hat da keine noch eine rettende idee? ;)

MfG
Stormsam

djf
20.01.04, 12:14
Original geschrieben von Stormsam
hi @all,

mir ist noch etwas aufgefallen:

Wenn ich mysqld mit -Sg starte und mich dann als root bei phpmyadmin einlogge, hat root zwar keine rechte aber er kann ein paar Datenbänke sehen dir zuvor nicht da waren.
Dort sind :
X11R6
adm
cache
games
lib
lock
log
mail
named
opt
run
spool
tmp
ucd-snmp
...


Das ist der Verzeichnisinhalt von /var !

Guck Dir doch nochmal das Startscript /etc/init.d/mysql an. Darin wird datadir auf /var/lib/mysql gesetzt. Aus irgeneinem Grund scheint das bei Dir plötzlich auf /var zu zeigen.