Installation à la mano :

Installation serveur mysql plus init mot de passé root :

Téléchargement :

http://dev.mysql.com/downloads/mysql/5.0.html

Linux (non RPM packages) downloads

Désarchivez le dans /opt/

adduser mysql
cd /opt
cd mysql-version
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
bin/mysqld_safe --user=mysql &
cd /opt
ln -s mysql-version mysql

Définir un Password root :

mysqladmin -u root password "password"

ou après si vous voulez le changer :

use mysql;

select * from user;

UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';

FLUSH PRIVILEGES;

Envirronement :

Important !

Mettre :

pathmunge /opt/mysql/bin 

dans le /etc/profile (su - pour prendre en compte tout de suite) et dans /etc/ld.so.conf

/opt/mysql/lib

N'oubliez pas de faire prendre en compte par votre systeme les modification que vous venez de faire :

ldconfig

Pour le chargement des librairies et :

source /etc/profile

Pour les binaires mysql dans le PATH.

init.d:

#!/bin/bash
PATH=/sbin:/bin:/usr/bin:/usr/sbin:/opt/mysql/bin
case "$1" in
    start)
        cd /opt/mysql
        ./bin/mysqld_safe --user=mysql &
        ;;
    stop)
        cd /opt/mysql
        killall mysqld &
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
        RETVAL=1
esac
exit

Sinon vous en avez un plus complet ici

Pour configurer et sécuriser votre mysql taper :

bin/mysql_secure_installation

Création d'une base et de son utilisateur

création de la base :

CREATE DATABASE nom_base DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

création de l'utilisateur :

GRANT ALL PRIVILEGES ON nom_base.* TO 'utilisateur'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

recharger les droits :

FLUSH PRIVILEGES;

Sauvegarder toutes vos bases de données dans un fichier .sql:

 mysqldump -u root -ppassword --default-character-set=latin1 -f --all-databases | bzip2 > /data/mysql-dump/mysql-dump-all-base.sql.bz2

L'option latin1 pour pas avoir de soucis d'accent en cas de ré-import, bzip2 pour que le fichier prenne moins de place, biensur ces deux options sont facultatives (bzip2 -d pour le décompresser), par contre le -f est important à mon avis (si mysqldump rencontre une erreur il continu quand meme.

Sauvegarder une base de donnée dans un fichier .sql :

mysqldump -u root -p -h localhost --opt nom-base > nom-base.sql

Sauvegarder une table d'une base :

mysqldump -u login -p -h localhost --opt nom-base nom-table > nom-table-de-nombase.sql

Injecter un .sql :

mysql -u root -p -D test < test.sql

-D pour la base de donnée qui doit déjà exister.

Informations importantes d’un serveur MySQL :

Pour l'utiliser, il suffit de vous connecter en root au serveur et de lancer la commande suivante :

mysql> \s
--------------
    mysql Ver 14.12 Distrib 5.0.51a, for redhat-linux-gnu (i386) using readline 5.0

    Connection id: 2
    Current database:
    Current user: root@localhost
    SSL: Not in use
    Current pager: stdout
    Using outfile: ''
    Using delimiter: ;
    Server version: 5.0.51a Source distribution
    Protocol version: 10
    Connection: Localhost via UNIX socket
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: latin1
    Conn. characterset: latin1
    UNIX socket: /var/lib/mysql/mysql.sock
    Uptime: 12 sec

    Threads: 1 Questions: 5 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.417
    -------------- 

La commande nous permet donc de voir rapidement l'uptime du serveur, sa version, son encodage, le nombre de slow queries, le nombre de tables ouvertes ... etc...

Problème sur vos données : tables et bases

Moi j'utilise c'est commande de temps en temps, vous avez aussi la possibilité de la mettre dans une tache cron :

./mysqlcheck -u root -ppassword --all-databases --auto-repair

Visualiser les connexions à la base en temps réel

mysql -e 'SHOW PROCESSLIST' -ppassword

Modification de champs/valeurs en ligne de commande :

  • show databases; (voir toutes les bases)
  • use plop; (utiliser la base plop)
  • show tables; (voir les tables de plop)
  • select * from user; (voir le contenu de la table user)
  • update user set Host='SRV-WWW' where Host='191.43.120.2'; (changer la valeur du champ Host de 191.43.120.2 à SRV-WWW)
  • insert into user values('SRV-WWW2','root','*C4890413824','Y','Y','Y',,,0,0); (rajouter un champ avec les valeurs entre parenthèse)

Ajout d'un fichier de configuration my.cnf :

Avec un script init un peu plus fournit que celui utiliser dans cet article vous arez la possibilité de mettre en place un fichier de configuration my.cnf pour votre serveur mysql.

Pour le script d'init vous le trouverez dans cet article.

Maintenant vous n'avez plus qu'a créer un fichier my.cnf dans /etc/ avec comme contenu :

##my.cnf
[mysqld]
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/opt/mysql/data/hostname.pid

Modification de la configuration à chaud :

Si vous ne pouvez pas arrêter votre serveur Mysql :

set global variable key_buffer_size=64*1024*1024;
set global variable table_cache_size=1024;

Adaptez selon la directive.

Obtenir la taille de toutes les bases de données en Mo :

SELECT table_schema,round(sum(data_length+index_length)/1024/1024,4) AS "Size (MB)"
FROM information_schema.tables
GROUP BY table_schema;

Obtenir la taille d'une tables dans un base donnée :

SELECT table_schema,round(sum(data_length+index_length)/1024/1024,4)
FROM information_schema.tables
WHERE table_schema = 'dotclear'
AND table_name = 'user';

ici vous aurez la taille de la table user dans la base de donnée dotclear

Configuration en UTF-8 :

Ajoutez les deux lignes suivantes à la fin de la section mysqld de votre my.cnf :

character-set-server=utf8
skip-character-set-client-handshake

Il faudra redémarrer votre serveur mysql.

Vous pouvez vérifier le résultat si vous vous connectez à mysql :

SHOW VARIABLES LIKE 'char%';

Lister les tables de la base de données utilisée (use nom_database) :

SHOW TABLES;

Structure d'une table :

DESCRIBE nom_table;

Renommer une table :

ALTER TABLE nom_table RENAME AS nouveau_nom;

Supprimer les droits sur une base à un utilisateur :

REVOKE ALL privileges ON nom_base.* FROM nom_utilisateur@localhost;

Créer un nouvel utilisateur :

CREATE user "nom_utilisateur"@"localhost";

Définir un mot de passe pour un user donné :

SET password FOR "nom_utilisateur"@"localhost" = password("mot_de_passe");

Supprimer un utilisateur :

DROP user nom_utilisateur@localhost;

Vider une table :

truncate table "nom_table";

Vérifier si une fonctionnalité est présente :

En ligne de commande dans un terminal : Exemple pour pdo_sqlite :

php <<< "<? phpinfo (); ?>" | grep pdo_sqlite

informations sur l'encodage :

SHOW VARIABLES LIKE 'char%';

Encodage dans my.cnf :

[mysqld]
#Set the default character set
default-character-set=utf8
#Set the default collation
default-collation=utf8_general_ci

Remplacement de chaînes de caractères :

UPDATE ma_table SET mon_champ = replace(mon_champ, 'ancienne-chaine', 'nouvelle-chaine'); 

Liste des requêtes en direct :

show processlist;

Activer le mode read only :

set GLOBAL read_only=true; 

Pour revenir au mode normal utiliser : false.

Voila si vous voyez autre chose d'intéressant n'hésitez pas :)