Mysql

De Marmits Wiki
Révision datée du 24 juillet 2019 à 14:25 par Geo (discussion | contributions) (Page créée avec « mysqldump export mysqldump --host=localhost --user=utilisateur --password=motdepass -C -Q -e --default-character-set=latin1 basededonnee | gzip -c > fichiersql.gz exp... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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é

  1. bind-address = 127.0.0.1

ouvrir le port 3306 dans le firewall