Mysql
mysqldump
export mysqldump --host=localhost --user=utilisateur --password=motdepass -C -Q -e --default-character-set=latin1 basededonnee | gzip -c > fichiersql.gz
export all database
mysqldump --host=localhost --user=root --password=motdepasse -C -Q -e --default-character-set=latin1 --all-databases | tar -zcvf > all_databases.gz
import gzip -d < fichiersql.gz | mysql --host=localhost --user= utilisateur --password= motdepass basededonnee
Pour importer une seule base à partir d'un dump complet, il faut entrer la commande suivante : mysql -u root -p --one-database BASE_A_RESTAURER < dumpcomplet.sql
extraire sous forme de fichier SQL, la base qui vous intéresse ? sed -n '/^-- Current Database: `BASE_A_EXTRAIRE`/,/^-- Current Database: `/p' dumpcomplet.sql > mabase.sql
mac os X
mysqldump sans mot de passe:
générer la config
/usr/local/mysql/bin/mysql_config_editor set --login-path=local --host=localhost --user=root --password
voir la config /usr/local/mysql/bin/mysql_config_editor print --all
se connecter: /usr/local/mysql/bin/mysql --login-path=local
dump: /usr/local/mysql/bin/mysqldump --login-path=local --host=localhost --user=root -C -Q -e --default-character-set=latin1 base | gzip -c > /users/.../base.gz
avec homebrew et zsh dans le fichier .zshrc (equivalent -->.bash_profile)
export PATH=${PATH}:/usr/local/mysql/bin
mac OS X export serveur dédié mysqldump --host=localhost --user=unuser --password=unpassword -C -Q -e --default-character-set=latin1 unebase | gzip -c > unebase.gz
import mac os X
gzip -d < unebase.gz | /usr/local/mysql/bin/mysql --host=localhost --user=unuser --password=unpassword unebase
Remplacer des caractères ou une chaine
UPDATE table SET le_champs = replace(le_champs, 'é', 'é') WHERE id > 0;
procédures stockées Procédures et fonctions sous MySQL: les bases:
repérer les doublons: SELECT champsadoublons, count(*) FROM table GROUP BY champsadoublons HAVING count(*) > 1
Créer un index FULLTEXT: CREATE FULLTEXT INDEX fti_matable ON matable( titre, contenu )
Requête de recherche avec INDEX FULL TEXT:
par pertinence :
SELECT *, MATCH (titre,contenu) AGAINST
('mots clefs') AS score FROM table WHERE MATCH (titre,contenu) AGAINST ('mots clefs');
par boolean : SELECT * FROM table WHERE MATCH (titre,contenu)
AGAINST ('+ mots clefs' IN BOOLEAN MODE) order by date desc;
SELECT * FROM table WHERE MATCH (titre,contenu)
AGAINST ("mots clefs" IN BOOLEAN MODE) order by date desc;
expression SELECT * FROM table WHERE MATCH (titre,contenu)
AGAINST ('"Grande première"*' IN BOOLEAN MODE) order by date desc;
- commençant par ....
Reconstruire l'index: REPAIR TABLE table
source:http://www.siteduzero.com/tutoriel-3-482339-index.html#ss_part_4
Étendre la recherche aux mots de 3 lettres
Par défaut MySQL FULLTEXT indexe les mots de quatre lettres ou plus. Pour étendre la recherche aux mots de 3 lettres ou plus, il faut modifier la config du serveur (/etc/mysql/my.cnf sous Debian), et ajouter les deux éléments suivants :
[mysqld] ft_min_word_len=3 [myisamchk] ft_min_word_len=3
creer un utilisteur full mysql -p GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
flush privileges;
divers mysql -p GRANT ALL PRIVILEGES ON db.* TO user @'%' IDENTIFIED BY 'pass'; flush privileges;
DELETE FROM mysql.db WHERE user='user' and host='%';
archiver une base sudo /usr/bin/mysqldump --default-character-set=latin1 --host=localhost --user=compte --password=pass base > /rep/base.sql
archiver toutes les bases sudo /usr/bin/mysqldump --default-character-set=latin1 --host=localhost --user=root --password=pass -A > /rep/fichier_dump.SQL
acces à distance GRANT ALL ON user.* TO base@'ipduposte' IDENTIFIED BY 'password' WITH GRANT OPTION;
/usr/local/mysql/bin/mysql -h ipdistante -u user -p --port=3306
dans /etc/mysql/my.cnf désactivé
- bind-address = 127.0.0.1
ouvrir le port 3306 dans le firewall