Script création base de données mysql et utilisateur

creerMysqlBDDetUser.sh
#!/bin/sh
 
# Fonction d'affichage du retour du script
#    printf '\e[32m\e[m' "$1 $2 $3"; 
ok() {
    printf "$1 $2 $3\n";
} 
 
EXPECTED_ARGS=3
E_BADARGS=65
MYSQL=`which mysql`
 
Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="GRANT ALL ON *.* TO '$2'@'localhost' IDENTIFIED BY '$3';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}"
 
if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: $0 dbname dbuser dbpass"
  exit $E_BADARGS
fi
 
$MYSQL -uroot -p -e "$SQL"
 
ok "Database $1 and user $2 created with a password $3"
cd ~/Téléchargements && chmod +x creerBDDetUser.sh
./scriptCreationBDDetUser.sh nomBDD nomUser_de_BDD mot_passe_user_de_BDD

Rappels

mysql -uroot -p
mysql>CREATE DATABASE site1;
mysql>CREATE USER 'utilisateur1'@'localhost' IDENTIFIED BY 'motpasse1';
Rappel
  • Pour supprimer un utilisateur :
mysql> DROP USER `utilisateur1`@`localhost`;
  • Depuis le shell linux, il faut prévenir le shell de ne pas interpréter les guillemets inversées :
mysql -uroot -p -e "drop user \`essai\`@\`localhost\`;"
mysql> SELECT USER,Host FROM mysql.user;

Ou depuis le shell linux :

mysql -uroot -p -e "select user, host from mysql.user;"
mysql>GRANT ALL privileges ON site1.* TO 'utilisateur1'@'localhost' IDENTIFIED BY 'motpasse1';
mysql>FLUSH privileges;

(On donne le mot de passe : “motdepasse1”

mysql -u utilisateur1 -p site1

(si des tables ont été créé )

mysql -u utilisateur1 -p site1 -e "show tables;"

* Pour donner un script de création de tables, d'insertion,etc,. sql depuis le shell : (Ne pas oublier le use site1 au début du script de création ou d'insertion pour le site site1 !)

mysql -u utilisateur1 -p <scriptSQL.sql

Références

man mysql