04 Oct 2013

GRANT PRIVILEGES in mysql

Um eine MySQL-Datenbank mit einen MySQL-Benutzer anlegen und ihm Zugriff auf eine Datenbanktabelle zu geben, ist folgendes am MySQL-Command-Promt einzugeben:


  • Benutzer mit allen Privileges anlegen
 chrissie ~ $ mysql -u root -pmysqlrootpassword

 mysql> create database web38_2;
 Query OK, 0 rows affected (0.06 sec)

 mysql> grant all privileges on web38_2.* to 'web38'@'localhost' identified by 'secret-pw';
  • Wenn man nicht alle privileges vergeben will, kann man das so tun
GRANT USAGE ON *.* TO `web38`@`localhost` IDENTIFIED BY PASSWORD 'secret-pw';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `web38_2`.* TO `web38`@`localhost`;
  • Kommt es beim anschließenden flush privileges zu folgendem Fehler:
 mysql> flush privileges;
 ERROR 1146 (42S02): Table 'mysql.procs_priv' doesn't exist
  • Dann hat man in der Zwischenzeit ein MySql-Update durchgeführt. Es ist auf der Kommandozeile folgendes einzugeben:
 chrissie ~ $ mysql_fix_privilege_tables --password=mysqlrootpassword
 This script updates all the mysql privilege tables to be usable by
 the current version of MySQL
  • Importieren einer Datenbank von der Kommandozeile aus:
 chrissie ~ $ mysql -u web38 -psecret-pw web38_2 < web38_2-dump.sql
 mysql: [Warning] Using a password on the command line interface can be insecure.