« Mysql » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(20 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 2 : | Ligne 2 : | ||
export | export | ||
mysqldump --host=localhost --user=utilisateur --password=motdepass -C -Q -e --default-character-set=latin1 basededonnee | gzip -c > fichiersql.gz | mysqldump --host=localhost --user=utilisateur --password=motdepass -C -Q -e --default-character-set=latin1 basededonnee | gzip -c > fichiersql.gz | ||
export all database | export all database | ||
mysqldump --host=localhost --user=root --password=motdepasse -C -Q -e --default-character-set=latin1 --all-databases | tar -zcvf > all_databases.gz | mysqldump --host=localhost --user=root --password=motdepasse -C -Q -e --default-character-set=latin1 --all-databases | tar -zcvf > all_databases.gz | ||
== import == | == import == | ||
gzip -d < fichiersql.gz | mysql --host=localhost --user= utilisateur --password= motdepass basededonnee | 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 : | 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 | mysql -u root -p --one-database BASE_A_RESTAURER < dumpcomplet.sql | ||
== extraire sous forme de fichier SQL, la base qui vous intéresse ? == | == 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 | sed -n '/^-- Current Database: `BASE_A_EXTRAIRE`/,/^-- Current Database: `/p' dumpcomplet.sql > mabase.sql | ||
== mac os X == | == mac os X == | ||
* générer la config | |||
générer la config | /usr/local/mysql/bin/mysql_config_editor set --login-path=local --host=localhost --user=root --password | ||
/usr/local/mysql/bin/mysql_config_editor set --login-path=local --host=localhost --user=root --password | |||
---- | ---- | ||
voir la config | * voir la config | ||
/usr/local/mysql/bin/mysql_config_editor print --all | /usr/local/mysql/bin/mysql_config_editor print --all | ||
---- | ---- | ||
se connecter: | * se connecter: | ||
/usr/local/mysql/bin/mysql --login-path=local | /usr/local/mysql/bin/mysql --login-path=local | ||
---- | ---- | ||
dump: | * dump: | ||
/usr/local/mysql/bin/mysqldump --login-path=local --host=localhost --user=root -C -Q -e --default-character-set=latin1 base | gzip -c > /users/.../ | /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 | |||
[https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_replace options mysqldump replace] | |||
[http://sylvain.benest.free.fr/Documentation%20APACHE_PHP_MYSQL/Manuel%20MYSQL/Manuel%20html/mysqldump.html options mysqldump replace traduction] | |||
---- | ---- | ||
avec homebrew et zsh | * avec homebrew et zsh | ||
dans le fichier .zshrc (equivalent -->.bash_profile) | dans le fichier .zshrc (equivalent -->.bash_profile) | ||
export PATH=${PATH}:/usr/local/mysql/bin | export PATH=${PATH}:/usr/local/mysql/bin | ||
---- | ---- | ||
import mac os X | * import mac os X | ||
gzip -d < unebase.gz | /usr/local/mysql/bin/mysql --host=localhost --user=unuser --password=unpassword unebase | gzip -d < unebase.gz | /usr/local/mysql/bin/mysql --host=localhost --user=unuser --password=unpassword unebase | ||
== export serveur dédié == | == export serveur dédié == | ||
Ligne 46 : | Ligne 51 : | ||
== | == Quelques fonctions: == | ||
* json | |||
SELECT JSON_EXTRACT(champs,"$.propriete") FROM table | |||
where (JSON_UNQUOTE(JSON_EXTRACT(champs,"$.propriete")) = 'crit') | |||
* entre 2 dates | |||
where DATE(t.unedate) between DATE('2023-07-31') AND DATE('2023-08-01') | |||
where '2023-05-28' BETWEEN t.valide_du AND t.valide_au | |||
* repérer les doublons: | * repérer les doublons: | ||
Ligne 60 : | Ligne 74 : | ||
) | ) | ||
Requête de recherche avec INDEX FULL TEXT: | |||
par pertinence : | * par pertinence : | ||
SELECT *, MATCH (titre,contenu) AGAINST | SELECT *, MATCH (titre,contenu) AGAINST | ||
('mots clefs') AS score | ('mots clefs') AS score | ||
Ligne 76 : | Ligne 90 : | ||
* expression | * expression | ||
SELECT * FROM table WHERE MATCH (titre,contenu) | SELECT * FROM table WHERE MATCH (titre,contenu) | ||
AGAINST ('"Grande première"*' IN BOOLEAN MODE) order by date desc; | AGAINST (<span style="color:red">'"Grande première"*'</span> IN BOOLEAN MODE) order by date desc; | ||
<i>* commençant par ....</i> | <i>* commençant par ....</i> | ||
Ligne 96 : | Ligne 110 : | ||
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION; | 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; | GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION; | ||
flush privileges; | flush privileges; | ||
Ligne 123 : | Ligne 136 : | ||
ouvrir le port 3306 dans le firewall | ouvrir le port 3306 dans le firewall | ||
== Changer l'encodage d'une base de données MySQL == | |||
Nettoyer et convertir en utf8 | |||
=== Backup de la base === | |||
mysqldump -uusername -ppassword -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B dbname > dump.sql | |||
cp dump.sql dump-fixed.sql | |||
vi dump-fixed.sql | |||
=== Rechercher / remplacer dans le fichier ouvert dans vi === | |||
:%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/ | |||
:%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/ | |||
:wq | |||
=== Suppression de la base de données et recréation en utf8 === | |||
DROP DATABASE dbname; | |||
CREATE DATABASE dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; | |||
=== Réimport de la base au format utf8 === | |||
mysql -uusername -ppassword --default-character-set=utf8 dbname< dump-fixed.sql | |||
== Wamp == | |||
=== Git BASH === | |||
Import ex:<br /> | |||
/c/wamp64/bin/mariadb/mariadb10.5.15/bin/mysql.exe --user=root --password=123456 --database=unebdd < undump.dump | |||
[[category:Sql]] |
Dernière version du 27 août 2024 à 12:03
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 options mysqldump replace traduction
- 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:
- json
SELECT JSON_EXTRACT(champs,"$.propriete") FROM table where (JSON_UNQUOTE(JSON_EXTRACT(champs,"$.propriete")) = 'crit')
- entre 2 dates
where DATE(t.unedate) between DATE('2023-07-31') AND DATE('2023-08-01') where '2023-05-28' BETWEEN t.valide_du AND t.valide_au
- 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
Changer l'encodage d'une base de données MySQL
Nettoyer et convertir en utf8
Backup de la base
mysqldump -uusername -ppassword -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B dbname > dump.sql cp dump.sql dump-fixed.sql vi dump-fixed.sql
Rechercher / remplacer dans le fichier ouvert dans vi
- %s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/
- %s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/
- wq
Suppression de la base de données et recréation en utf8
DROP DATABASE dbname; CREATE DATABASE dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Réimport de la base au format utf8
mysql -uusername -ppassword --default-character-set=utf8 dbname< dump-fixed.sql
Wamp
Git BASH
Import ex:
/c/wamp64/bin/mariadb/mariadb10.5.15/bin/mysql.exe --user=root --password=123456 --database=unebdd < undump.dump