Mysql : Différence entre versions

De SME Server Wiki
(rendre accessible depuis l'internet)
(Sauvegarde de mysql)
 
(17 révisions intermédiaires par 7 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
''Article spammé - récupération à partir de l'historique (rév. du 22 aout 2007)''
 
Tout d'abord Mysql est en version 4 sous SME 7.0.
 
Tout d'abord Mysql est en version 4 sous SME 7.0.
  
Vous pouvez l'amdinistrer facilement par le web avec phpmyadmin, un rpm est disponible, vous pouvez le trouver sur http://www.contribs.org
+
Vous pouvez l'administrer facilement par le web avec phpmyadmin, un rpm est disponible, vous pouvez le trouver sur http://www.contribs.org
  
 
== Utilisation de mysql ==
 
== Utilisation de mysql ==
Ligne 7 : Ligne 8 :
 
'''Attention ne pas utiliser le compte root pour vos applications web''', à la place créez en un spécifique.
 
'''Attention ne pas utiliser le compte root pour vos applications web''', à la place créez en un spécifique.
 
Pour créer un utilisateur en ligne de commande suivez le how to de GrandPa ( http://smeserver.fr/astuces.php?astuce=mysql_users_create ).
 
Pour créer un utilisateur en ligne de commande suivez le how to de GrandPa ( http://smeserver.fr/astuces.php?astuce=mysql_users_create ).
Pour creer un utilisateur avec phpmyadmin d'abord créez la base vide qu'il devra gerer, ensuite allez dans '''privileges''' puis '''ajouter un utilisateur''', donner lui un nom, serveur: localhost, choisissez le mot de passe. Puis créez l'utilisateur sans rein cocher de plus. A la page suivante vous pourez choisir la base que vous avez créé, puis donner tous les droits voulu sur cette base, validez et le toru est joué votre base et son utilisateur sont prés à être utilisé dans n'importe quel application web.
+
Pour creer un utilisateur avec phpmyadmin d'abord créez la base vide qu'il devra gerer, ensuite allez dans '''privileges''' puis '''ajouter un utilisateur''', donner lui un nom, serveur: localhost, choisissez le mot de passe. Puis créez l'utilisateur sans rein cocher de plus. A la page suivante vous pourez choisir la base que vous avez créé, puis donner tous les droits voulu sur cette base, validez et le tour est joué votre base et son utilisateur sont prés à être utilisé dans n'importe quel application web.
 
+
  
 
== Interface graphique ==
 
== Interface graphique ==
Ligne 18 : Ligne 18 :
  
 
voici un petit script que j'apprecie  pour la sauvegarde des mes bases dans des fichiers séparés:
 
voici un petit script que j'apprecie  pour la sauvegarde des mes bases dans des fichiers séparés:
 
+
vous pouvez simplement le poser dans /etc/cron.daily/sauve_mysql, ou même dans /etc/cron.hourly/sauve_mysql
  
 
  #!/bin/sh
 
  #!/bin/sh
 +
# Absolute path to this script.
 +
SCRIPT=$(readlink -f $0)
 +
# Absolute path this script is in. /etc/cron.daily, to know if it is in cron.hourly , cron.daily or elsewhere
 +
SCRIPTPATH=`dirname $SCRIPT|rev| cut -d/  -f1|cut -d. -f1|rev`
 +
 +
if <nowiki>[[ "$SCRIPTPATH" == "hourly" ]]</nowiki>
 +
then
 +
# variable de date
 +
DATE=$(date +%Y-%m-%H)
 +
# SCRIPTPATH="hourly" obviously
 +
# purge after $PURGE days
 +
PURGE=7;
 +
else
 
  # variable de date
 
  # variable de date
 
  DATE=$(date +%Y-%m-%d)
 
  DATE=$(date +%Y-%m-%d)
 +
SCRIPTPATH="daily"
 +
# purge after $PURGE days
 +
PURGE=60;
 +
fi
 +
 
  # liste des bases mysql
 
  # liste des bases mysql
 
  FILE=(`mysqlshow|sed -e "/^+--/d"|sed -e "/Database/d"|cat|tr '\n' ' '|sed -e "s/|//g"|sed -e "s/ //"`)
 
  FILE=(`mysqlshow|sed -e "/^+--/d"|sed -e "/Database/d"|cat|tr '\n' ' '|sed -e "s/|//g"|sed -e "s/ //"`)
Ligne 30 : Ligne 48 :
 
  #  sauvegarde
 
  #  sauvegarde
 
  ####################
 
  ####################
  mkdir -p /home/e-smith/db/mysql/daily/${DATE}/
+
  mkdir -p /home/e-smith/db/mysql/${SCRIPTPATH}/${DATE}/
  index=1
+
  index=0
 
  while [ "$index" -lt "$nb_element" ]
 
  while [ "$index" -lt "$nb_element" ]
 
  do #dump de toutes les bases
 
  do #dump de toutes les bases
 
  #echo ${FILE[$index]}
 
  #echo ${FILE[$index]}
  /usr/bin/mysqldump -aec ${FILE[$index]} > /home/e-smith/db/mysql/daily/${DATE}/dumpdaily${DATE}-${FILE[$index]}.sql
+
# si taille  plus importante que 10Mio on compresse
 +
if [ -d "/var/lib/mysql/${FILE[$index]}" ];then
 +
SIZE=`du -s /var/lib/mysql/${FILE[$index]}|cut -f1`
 +
else
 +
SIZE="1";
 +
fi
 +
if <nowiki>[[ "$SIZE" -lt "10000" ]]</nowiki>; then
 +
  /usr/bin/mysqldump -aec ${FILE[$index]} > /home/e-smith/db/mysql/${SCRIPTPATH}/${DATE}/dumpdaily${DATE}-${FILE[$index]}.sql
 +
else
 +
#si vous avez des bases très grosses vous pouvez préférer ceci :
 +
/usr/bin/mysqldump -aec ${FILE[$index]} | gzip -c > /home/e-smith/db/mysql/${SCRIPTPATH}/${DATE}/dumpdaily${DATE}-${FILE[$index]}.sql.gz
 +
fi
 
  let "index = $index + 1"
 
  let "index = $index + 1"
 
  done
 
  done
 +
 +
# voici un dump rapide des entrées de la base mysql pour rajouter les users et privilèges voulus en moins de deux
 +
# une méthode simple pour éviter le probleme de password root sur un nouveau sme, enlevez la ligne dans le fichier suivant.
 +
/usr/bin/mysqldump mysql  -it --skip-opt --dump-date >/home/e-smith/db/mysql/daily/A_Rapid_Mysql_DB_users_restore.sql
 +
 
  ####################
 
  ####################
  #purge 60 jours
+
  #purge n jours
 
  #####################
 
  #####################
  nice find /home/e-smith/db/mysql/daily -type d -mtime +"60" |xargs rm -fr
+
  nice find /home/e-smith/db/mysql/${SCRIPTPATH} -type d -mtime +"60" |xargs rm -fr
 
  # d directory  f files
 
  # d directory  f files
 
  # mtime en jours
 
  # mtime en jours
  
 
--[[Utilisateur:WikiSysop|WikiSysop]] 3 juillet 2006 à 15:13 (CEST)
 
--[[Utilisateur:WikiSysop|WikiSysop]] 3 juillet 2006 à 15:13 (CEST)
 
 
== J'ai modifié le mot de passe root... ==
 
 
Il ne faut surtotu pas modifier le mot de passe root general qui est stocké dans un fichier pour l'utilisation du ldap. Celui ci fait plus de 70 caracteres.
 
c'est ce meme mot d epasse qui est utilisé derriere votre dos pour acceder à mysql en ligne de commande par exemple.
 
Ne modifier donc pas le mot de passe stocké dans la table user de la base mysql. ne modifiez pas cette table non plus.
 
 
Si vous avez fait une telle betise voila le remede pour sme 7:
 
 
cd /service/mysqld
 
runsvctrl d .
 
cat set.password | /usr/libexec/mysqld --bootstrap  --user=mysql --skip-grant-tables
 
runsvctrl u .
 
 
Si c'est insuffisant voila pour reparer totalement mysql : attention cette methode ecrase toutes les bases existantes:
 
cd /service/mysqld
 
runsvctrl d .
 
/etc/e-smith/events/actions/mysql-delete-db-files
 
signal-event post-upgrade
 
signal-event reboot
 
  
 
== rendre accessible depuis le reseau local ==
 
== rendre accessible depuis le reseau local ==
Ligne 72 : Ligne 85 :
 
  config setprop mysqld LocalNetworkingOnly no
 
  config setprop mysqld LocalNetworkingOnly no
 
  expand-template /etc/my.cnf
 
  expand-template /etc/my.cnf
  /etc/rc7.d/S*mysqld restart
+
  service mysqld restart
  
 
== rendre accessible depuis l'internet ==
 
== rendre accessible depuis l'internet ==
attention cette manipulation est utile uniquemetn si vous desirez contacter directement votre base depuis l'internet: ELLE N'EST PAS A REALISER POUR VOIR SON CONTENU GRACE A UNE PAGE WEB HEBERGEE SUR VOTRE SME.
+
attention cette manipulation est utile uniquement si vous desirez contacter directement votre base depuis l'internet: ELLE N'EST PAS A REALISER POUR VOIR SON CONTENU GRACE A UNE PAGE WEB HEBERGEE SUR VOTRE SME.
 +
 
 +
'''Réaliser cette manoeuvre provoque une exposition dangeureuse de votre base mysql
 +
'''
 
  config setprop mysqld TCPPort 3306 acces public status enabled LocalNetworkingOnly no
 
  config setprop mysqld TCPPort 3306 acces public status enabled LocalNetworkingOnly no
 
  expand-template /etc/my.cnf
 
  expand-template /etc/my.cnf
  /etc/rc7.d/mysqld restart
+
  service mysqld restart
 
  signal-event remoteaccess-updates
 
  signal-event remoteaccess-updates
  
 
== Replication de mysql ==
 
== Replication de mysql ==
[Mysql_replication]
+
[[Mysql_replication]]

Version actuelle en date du 6 octobre 2014 à 13:38

Article spammé - récupération à partir de l'historique (rév. du 22 aout 2007) Tout d'abord Mysql est en version 4 sous SME 7.0.

Vous pouvez l'administrer facilement par le web avec phpmyadmin, un rpm est disponible, vous pouvez le trouver sur http://www.contribs.org

Utilisation de mysql

Attention ne pas utiliser le compte root pour vos applications web, à la place créez en un spécifique. Pour créer un utilisateur en ligne de commande suivez le how to de GrandPa ( http://smeserver.fr/astuces.php?astuce=mysql_users_create ). Pour creer un utilisateur avec phpmyadmin d'abord créez la base vide qu'il devra gerer, ensuite allez dans privileges puis ajouter un utilisateur, donner lui un nom, serveur: localhost, choisissez le mot de passe. Puis créez l'utilisateur sans rein cocher de plus. A la page suivante vous pourez choisir la base que vous avez créé, puis donner tous les droits voulu sur cette base, validez et le tour est joué votre base et son utilisateur sont prés à être utilisé dans n'importe quel application web.

Interface graphique

Voici un petit how to pour Installer_phpMyAdmin. Phpmyadmin vous permettra de gerer avec une interface web votre base mysql pour les taches les plus courantes.


Sauvegarde de mysql

voici un petit script que j'apprecie pour la sauvegarde des mes bases dans des fichiers séparés: vous pouvez simplement le poser dans /etc/cron.daily/sauve_mysql, ou même dans /etc/cron.hourly/sauve_mysql

#!/bin/sh
# Absolute path to this script. 
SCRIPT=$(readlink -f $0)
# Absolute path this script is in. /etc/cron.daily, to know if it is in cron.hourly , cron.daily or elsewhere
SCRIPTPATH=`dirname $SCRIPT|rev| cut -d/  -f1|cut -d. -f1|rev`

if [[ "$SCRIPTPATH" == "hourly" ]]
then
# variable de date
DATE=$(date +%Y-%m-%H)
# SCRIPTPATH="hourly" obviously
# purge after $PURGE days
PURGE=7;
else
# variable de date
DATE=$(date +%Y-%m-%d)
SCRIPTPATH="daily"
# purge after $PURGE days
PURGE=60;
fi

# liste des bases mysql
FILE=(`mysqlshow|sed -e "/^+--/d"|sed -e "/Database/d"|cat|tr '\n' ' '|sed -e "s/|//g"|sed -e "s/ //"`)
#nb de bases
nb_element=${#FILE[*]}
####################
#   sauvegarde
####################
mkdir -p /home/e-smith/db/mysql/${SCRIPTPATH}/${DATE}/
index=0
while [ "$index" -lt "$nb_element" ]
do #dump de toutes les bases
#echo ${FILE[$index]}
# si taille  plus importante que 10Mio on compresse
if [ -d "/var/lib/mysql/${FILE[$index]}" ];then
SIZE=`du -s /var/lib/mysql/${FILE[$index]}|cut -f1`
else
SIZE="1";
fi
if [[ "$SIZE" -lt "10000" ]]; then
/usr/bin/mysqldump -aec ${FILE[$index]} > /home/e-smith/db/mysql/${SCRIPTPATH}/${DATE}/dumpdaily${DATE}-${FILE[$index]}.sql
else
#si vous avez des bases très grosses vous pouvez préférer ceci :
/usr/bin/mysqldump -aec ${FILE[$index]} | gzip -c > /home/e-smith/db/mysql/${SCRIPTPATH}/${DATE}/dumpdaily${DATE}-${FILE[$index]}.sql.gz
fi
let "index = $index + 1"
done

# voici un dump rapide des entrées de la base mysql pour rajouter les users et privilèges voulus en moins de deux
# une méthode simple pour éviter le probleme de password root sur un nouveau sme, enlevez la ligne dans le fichier suivant.
/usr/bin/mysqldump mysql  -it --skip-opt --dump-date >/home/e-smith/db/mysql/daily/A_Rapid_Mysql_DB_users_restore.sql

####################
#purge n jours
#####################
nice find /home/e-smith/db/mysql/${SCRIPTPATH} -type d -mtime +"60" |xargs rm -fr
# d directory  f files
# mtime en jours

--WikiSysop 3 juillet 2006 à 15:13 (CEST)

rendre accessible depuis le reseau local

config setprop mysqld LocalNetworkingOnly no
expand-template /etc/my.cnf
service mysqld restart

rendre accessible depuis l'internet

attention cette manipulation est utile uniquement si vous desirez contacter directement votre base depuis l'internet: ELLE N'EST PAS A REALISER POUR VOIR SON CONTENU GRACE A UNE PAGE WEB HEBERGEE SUR VOTRE SME.

Réaliser cette manoeuvre provoque une exposition dangeureuse de votre base mysql

config setprop mysqld TCPPort 3306 acces public status enabled LocalNetworkingOnly no
expand-template /etc/my.cnf
service mysqld restart
signal-event remoteaccess-updates

Replication de mysql

Mysql_replication