# MySQL Controluser Basics



## agitator (17. März 2004)

Hallo,

nach langem Suchen scheint mir, daß niemand einen Controluser in MySQL/phpmyadmin anlegt. Warum eigentlich? Ohne den funktioniert MySQL doch nicht als relationale DB. Oder habe ich da was falsch verstanden?

Auf meinem neuen Rechner (XP) setze ich als Entwicklungsumgebung zum erstenmal Apache ein, vorher war es Jana2 unter Win 98 (also eigentlich WJMP statt WAMP), deshalb möchte ich jetzt auch alles von Anfang an richtig machen. D. h. MYSQL tatsächlich auch als relationale Datenbank nutzen.

Gibt es im Netz dazu irgendwo ausführliche Tutorials (dtsch. oder eng.)?
Oder gibt es irgendwo eine .sql, die mir alle nötigen Änderungen in den MySQL-Tabellen macht?

Für Links oder erhellende Erläuterungen bin ich dankbar.

agitator


----------



## XChris (18. März 2004)

agitator hat gesagt.:
			
		

> Hallo,
> 
> nach langem Suchen scheint mir, daß niemand einen Controluser in MySQL/phpmyadmin anlegt. Warum eigentlich?



Was ist ein Controluser?
Meinst Du, einen User mit Adminrechten spezial für PHPMyAdmin?
Wenn ja: Solange man alleine an MySQL Arbeitet sehen die meisten den Mehraufwand für eine Nutzeradministration wohl nicht ein ....



> Ohne den funktioniert MySQL doch nicht als relationale DB. Oder habe ich da was falsch verstanden?
> ]



Ja. Hast Du. Das eine hat doch mit dem anderem nichts zu tun. 



> Auf meinem neuen Rechner (XP) setze ich als Entwicklungsumgebung zum erstenmal Apache ein, vorher war es Jana2 unter Win 98 (also eigentlich WJMP statt WAMP),



Bitte?
Also ich bin mir ganz, ganz sicher: Apache ist entweder nen Ureinwohner Amerika's oder nen Webserver - aber keine Entwicklungsumgebung.



> deshalb möchte ich jetzt auch alles von Anfang an richtig machen. D. h. MYSQL tatsächlich auch als relationale Datenbank nutzen.



Dann würd ich Dir raten auf InnoDB mit MySQL zu setzen. Denn die normalen MyISAM Tabellen bietet keinen ACID. Da kann man ganz schnell ganz viele Fehler machen. Ausserdem gibt es prima Webseiten im Netz. Stichwort Normaliseriung.



> Gibt es im Netz dazu irgendwo ausführliche Tutorials (dtsch. oder eng.)?
> Oder gibt es irgendwo eine .sql, die mir alle nötigen Änderungen in den MySQL-Tabellen macht?



Also gute Tutorials gibt es ne Menge. Schau mal hier auf DIESEM Portal und in der Linkliste bei Datenbanken ALGEMEIN auf   SDH  .



> Für Links oder erhellende Erläuterungen bin ich dankbar.



Ja dann ... schauen wir mal, ob  Du mit den Informationen weiter kommmst.

Chris


----------



## agitator (18. März 2004)

Hallo Chris,

danke für Deine Antwort.

"Entwicklungsumgebung" ist natürlich Quatsch. Ich meinte damit daß ich meine php-Scripte mit Apache-php-MySQL lokal teste.


Daß MySQL ohne Controluser nicht als relationale Datenbank funktioniert, entnehme ich folgender Passage aus der phpMyAdmin-Doku:

"..This special account is used for 2 distinct purposes: ... and also for all relational features..."

Ebenso erinnere ich mich an entsprechende phpMyAdmin-Warnmeldungen in meiner alten WJMP-Umgebung (schon wieder Umgebung?).

In der MySQL-Doku habe ich aber dann nichts derartiges gefunden. Google hat auch keine wirklich brauchbaren Treffer zum Thema Controluser ausgespuckt.

Hmm... muß ich wohl nochmal genauer suchen.

Gruß, Daniel


----------



## agitator (18. März 2004)

Hallo,

hier mein Erfahrungsbericht zum Thema "controluser" und "relational features". Jetzt scheint es zu funktionieren.

Das erste was ich lernen mußte ist: erst englisch, dann erst deutsch googlen. Ich hab's anfangs leider andersrum gemacht und dadurch viel Zeit mit irrelevanten Infos verbracht. Hier gibt's einen Beitrag, der mir weitergeholfen hat:
http://www.webhostingtalk.com/archive/thread/40399-1.html

Das zweite ist, lieber in der phpMyAdmin-Doku zu suchen und nicht in der MySQL-Doku. In ersterer findet man die wichtigen Infos, in letzterer steht nicht viel über den Controluser.

Und so geht's:

1) In der mysql-Tabelle "user" den Controluser anlegen. Standart: "pma" und "pmapass".

2) phpmyadmin\scripts\create_tables.sql innerhalb phpmyadmin ausführen.

3) SQL-Befehl ausführen:


```
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
   GRANT SELECT (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) ON mysql.user TO 'pma'@'localhost';
   GRANT SELECT ON mysql.db TO 'pma'@'localhost';
   GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO 'pma'@'localhost';
```

4) config.inc.php nachbearbeiten. Also:


```
$cfg['Servers'][$i]['controluser']   = 'pma';
   $cfg['Servers'][$i]['controlpass']   = 'pmapass';
   ...
   $cfg['Servers'][$i]['pmadb']         = 'phpmyadmin';
   $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
   $cfg['Servers'][$i]['relation']      = 'pma_relation';
   ...
   $cfg['Servers'][$i]['history']       = 'pma_history';
```
   Details in create_tables.sql.

BTW, nicht vergessen zwischen Schritt 1 und 2 den MySQL-Dienst neu zu starten. Sonst gibt's Fehlermeldungen.

Logischerweise sollte man nur auf dem heimischen Rechner bei den Standartnamen bleiben. Ansonsten aus Sicherheitsgründen anpassen.

Vielleicht hilft das ja irgendwem weiter.

Bis denn, Daniel


----------

