## - ----------------------------------------------------------------
## - MySql Superuser anlegen
## - ----------------------------------------------------------------

## - Bemerkung:
## -    Das Passwort wird verschlsselt abgespeichert

## - Von berall:
## -
GRANT ALL PRIVILEGES ON *.* TO 'admin' IDENTIFIED BY 'Nyz!aB2u' WITH GRANT OPTION ;
FLUSH PRIVILEGES;

## - Nur von loacalhost
## -
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost'  IDENTIFIED BY 'Nyz!aB2u' WITH GRANT OPTION ;
FLUSH PRIVILEGES;



## - ----------------------------------------------------------------
## - Dantenbank  anlegen, User anlegen mit vollen Rechten auf der Datenbank
## - ----------------------------------------------------------------

CREATE DATABASE <new_db_name> CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON new_db.* TO 'new_user'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;


## -  Dantenbank  anlegen, User mit eingeschrenkten Rechten auf der Datenbank
## -
## - Beispiel: vpopmail
## -
CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO 'vpop'@'localhost' IDENTIFIED BY 'r23myzmx';
FLUSH PRIVILEGES;


## - ----------------------------------------------------------------
## - Zeige alle Views einer Datenbank
## - ----------------------------------------------------------------

SHOW FULL TABLES IN <db_name> WHERE TABLE_TYPE LIKE 'VIEW'


## - ----------------------------------------------------------------
## - Zeige Definition eines Views
## - ----------------------------------------------------------------

show CREATE VIEW <view_name>;


## - ----------------------------------------------------------------
## - Datenbank User und deren Rechte auslesen
## - ----------------------------------------------------------------
mysql -uroot -pbuz111 mysql --skip-column-name -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>'';" | mysql -uroot -pbuz111 mysql --skip-column-name -A  | sed 's/$/;/g' > ~/mysql-grants.sql



## - ----------------------------------------------------------------
## - Convert databese from current latin1 to utf8
## - ----------------------------------------------------------------

db_name=<database-name>
db_user=<database-user>
db_pass=<database-password>

old_charset=latin1
#old_collate=latin1_swedish_ci - NOT NEEDED
new_charset=utf8
new_collate=utf8_unicode_ci

## - 1.) dump the databse as follows:
dumpfile=${db_name}-${old_charset}.`date +%Y%m%d-%H%M`.sql
mysqldump -u$db_user -p$db_pass  --set-charset --skip-set-charset --add-drop-table $db_name > $dumpfile

## - 2.) change character settings on mysql monitor
query="ALTER DATABASE \`$db_name\` DEFAULT CHARACTER SET $new_charset DEFAULT COLLATE $new_collate;"
mysql -u$db_user -p$db_pass $db_name -e "$query"

## - 3.) Load he dumpfile 
mysql -u$db_user -p$db_pass  --default-character-set=$old_charset $db_name < $dumpfile

## - 4.) show result
mysql -u$db_user -p$db_pass $db_name -e "SHOW CREATE DATABASE $db_name\G"



--------------------------------------------------------------------------------------------------

## - dump database WITHOUT CREATE TABLE Statements - useful, if you
## - want add entries into existing tables of an existing database, 
## - i.e. database "mysql"
## - 
mysqldump -uroot -p --add-locks --disable-keys --extended-insert \
   --lock-tables --quick --set-charset --no-create-info mysql > db_mysql.sql

## - durmp table "user" from database mysql without CREATE TABLE statment
## -
mysqldump -uroot -pbuz111 --add-locks --disable-keys --extended-insert --lock-tables --quick --set-charset --no-create-info mysql user | sed 's#),(#);\n(#g' | sed 's#^(#INSERT INTO `user` VALUES (#' > mysql-user.sql


## - restore
mysql -uroot -pbuz111 -f mysql < mysql-user.sql



--------------------------------------------------------------------------------------------------


## charset fr den MySQL  monitor einstellen
##
mysql> SET CHARACTER SET UTF8;
## bzw.
mysql> \C utf8


## zeige Server-Konfiguration
##
mysql> SHOW VARIABLES;

mysql> SHOW /*!50000 global */ VARIABLES ;
mysql> SHOW /*!50000 global */ VARIABLES LIKE "%slow%";


## - Zeige Sever Status
## -
mysql> SHOW STATUS ;

mysql> SHOW /*!50000 global */ STATUS ;
mysql> SHOW /*!50000 global */ STATUS LIKE "slow%";
