« Mysql » : différence entre les versions
Ligne 28 : | Ligne 28 : | ||
* dump: | * dump: | ||
/usr/local/mysql/bin/mysqldump --login-path=local --host=localhost --user=root -C -Q -e --default-character-set=latin1 unebase | gzip -c > /users/.../base.gz | /usr/local/mysql/bin/mysqldump --login-path=local --host=localhost --user=root -C -Q -e --default-character-set=latin1 unebase | gzip -c > /users/.../base.gz | ||
mysqldump --host=localhost --user=root --password=motdepasse -C -Q -e --default-character-set=utf8mb4 unebase | gzip -c > /users/.../dumpsql.gz | |||
-C: --compress | |||
mysqldump --host=localhost --user=root --password=motdepasse -C -Q - | -Q: --quote-names | ||
-e: --extended-insert | |||
[https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_replace options mysqldump replace] | |||
---- | ---- | ||
* avec homebrew et zsh | * avec homebrew et zsh |
Version du 17 juin 2020 à 12:15
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
- 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 unebase | gzip -c > /users/.../base.gz mysqldump --host=localhost --user=root --password=motdepasse -C -Q -e --default-character-set=utf8mb4 unebase | gzip -c > /users/.../dumpsql.gz -C: --compress -Q: --quote-names -e: --extended-insert options mysqldump replace
- avec homebrew et zsh
dans le fichier .zshrc (equivalent -->.bash_profile) export PATH=${PATH}:/usr/local/mysql/bin
- import mac os X
gzip -d < unebase.gz | /usr/local/mysql/bin/mysql --host=localhost --user=unuser --password=unpassword unebase
export serveur dédié
mysqldump --host=localhost --user=unuser --password=unpassword -C -Q -e --default-character-set=latin1 unebase | gzip -c > unebase.gz
Remplacer des caractères ou une chaine
UPDATE table SET le_champs = replace(le_champs, 'é', 'é') WHERE id > 0;
Quelques fonctions:
- 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