Soutenir Vision du Web dans son partage de logiciels et de ressources libres

Ce mineur crée de la monnaie numérique Monero pour soutenir Vision du web.
Merci de désactiver votre bloqueur de publicité.
Aucune publicité ne sera affichée.
Le mineur utilise les ressources de votre machine pour créer gratuitement de la monnaie numérique.
Le montant des donations pour Vision du web est de 0.055032388807457 Monero.

Installer MySQL sur Debian

De Wiki. Analyse, Communication, Développement, Hacking.
Aller à : navigation, rechercher
Naviguer sur le site : Accueil du site - Les annuaires - Les éditoriaux - Le forum - Les outils - Les projets

Installer MySQL sur Debian

Installation des paquets

# Le paquet mysql-client permet de lancer une commande MySQL vers une base de données distante.
apt install mysql-client
# Le paquet mysql-server permet de faire tourner un serveur MySQL pour y stocker des données.
apt install mysql-server
# Connaître les versions de MySQL disponibles dans les dépôts.
apt-cache search mysql-server

Créer une base de données en ligne de commande

Source : http://blogosquare.com/mysql-creer-une-base-de-donnees-en-ligne-de-commande-sous-linux/

Créer un utilisateur MySQL avec des droits spécifiques

I solved in this way: I logged in with root username

mysql -u root -p -h localhost

I created a new user with

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

then I created the database

CREATE DATABASE shop;

I granted privileges for new user for this database

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

Then I logged out root and logged in new user

quit; mysql -u francesco -p -h localhost

Source : http://codes-sources.commentcamarche.net/faq/275-creer-un-utilisateur-mysql-avec-des-droits-specifiques-sur-une-base-particuliere

Ajouter des utilisateurs MySQL

# Dans un premier temps, on se connecte au serveur MySQL en root :
mysql -u root -p
# Lancer la commande SQL de création d’utilisateur auquel on donne tous les droits :
GRANT ALL PRIVILEGES ON *.* TO 'nouvel_user'@'localhost' IDENTIFIED BY 'nouvel_user_mot_de_passe' WITH GRANT OPTION;

Changer le mot de passe administrateur (root) de MySQL

Source : https://www.admin-linux.fr/mysql-reinitialisation-du-mot-de-passe-administrateur-root/

Établir une connexion distante

Donner les privilèges à l'utilisateur MySQL pour autoriser une connexion distante.
Source : http://www.commentcamarche.net/forum/affich-28220763-connexion-a-distance-sur-une-base-de-donnees
La base de données LWS permet t'elle l'accès à distance pour un mutualisé ? NON !
Pour VPS : https://aide.lws.fr/base/Serveurs-dedies/ISPConfig/creer-acces-distant-base-de-donnees-MySQL-sur-serveur-VPS
Pour serveur dédié : https://blog.lws-hosting.com/serveur-dedie/mysql-se-connecter-a-distance-mysql-howto-part-33
# Complément pour configurer MySQL pour autoriser une connexion distante.
Source : https://technique.arscenic.org/lamp-linux-apache-mysql-php/mysql-le-serveur-de-bases-de-donnees/article/acces-distant-a-un-serveur-mysql
Connexion à une base MySQL : mysql -uUTILISATEUR -pPASSWORD -hSERVEUR -D BASEDEDONNEES -e 'SELECT * FROM TABLE'
Ajouter SSL :

Droits restreints

La bonne solution est de créer un user/pass par personne qui doit écrire dans la base avec le strict minimum de droits.
Par exexmple ne donner que des droits d'insert sur une table sans droits de lecture ni update.

MySQL en ligne de commande

# Pour l’utilisation dans un script on utilisera les options -B pour enlever le formatage en colonne et -s pour enlever l’entête de colonne.

Structure de la table

# Lister toutes les bases de données sur un serveur.
mysqlshow -hHOTE -uUTILISATEUR -pPASSWORD
mysql -u UTILISATEUR -pPASSWORD -h HOTE -D Nom_de_la_base_de_données -e 'SHOW DATABASES;'
# Description d'une table
mysql -u UTILISATEUR -pPASSWORD -h HOTE -D Nom_de_la_base_de_données -e 'DESCRIBE Une_table'
# Contenu d'une table.
mysql -u UTILISATEUR -pPASSWORD -h HOTE -D Nom_de_la_base_de_données -e 'SELECT * FROM Une_table'
# Lister les colonnes d'une table.
mysql -u UTILISATEUR -pPASSWORD -h HOTE -D Nom_de_la_base_de_données -e 'SHOW FULL COLUMNS FROM Une_table'

Importer

# Importer une seule base depuis un fichier de sauvegarde base_exportee.sql.
mysql -u utilisateur -p  base_exportee < base_exportee.sql
# Si toutes les bases de données du serveur sont dans le même fichier suite à l'utilisation de l’option --all-databases, la commande suivante permet de ne réimporter qu’une seule base.
mysql --one-database une_seule_base < serveur.sql

Sauvegarder

# Exporter le contenu d'une table avec MySQL uniquement.
mysql -u UTILISATEUR -pPASSWORD -h HOTE -D Nom_de_la_base_de_données -e 'SELECT * FROM Une_table' > table_exportee.sql
# Sauvegarder une base de données avec MySQLDump.
mysqldump -h HOTE -u UTILISATEUR -pPASSWORD Nom_de_la_base_de_données > save.mysql
# La commande suivante exporte le contenu de l’ensemble des bases de données du serveur vers le fichier serveur.sql.
mysqldump --all-databases -u root -p > serveur.sql
mysqldump --all-databases -u root --password=mot_de_passe_root > serveur.sql
# Pour n’exporter que le contenu d’une seule base, il est nécessaire de préciser son nom (par exemple ma_base ici) de la sorte :
mysqldump -u root --password=mot_de_passe_root ma_base > ma_base.sql
# Sauvegarder toutes les bases de données dans un fichier séparé pour chaque base.
#!/bin/bash
mysql_user=NomUtilisateurDeLaBase
mysql_pass=MotDePasse

bases=`mysql -u $mysql_user -p$mysql_pass -h ADRESSE_DU_SERVEUR -e "show databases;" -B -s 2> /dev/null`

if [ -z "$bases" ];then
 echo "Erreur d'accès ou pas de bases"
 exit 1
fi

echo "Début de la sauvegarde"
for base in $bases
do
 echo "Sauvegarde de $base..."
 mysqldump -u$mysql_user -p$mysql_pass -hADRESSE_IP_DU_SERVEUR "$base" > $base.sql
done

echo "Sauvegarde terminée"

automysqlbackup

Le paquet suivant peut être utilisé pour sauvegarder automatiquement les bases de données de MySQL : https://doc.ubuntu-fr.org/automysqlbackup
Voir si le paquet est toujours compatible, et, adapté aux besoins.
# Le conseil apporté sur la liste Debian user French :
Pour un environnement de production ce paquet a un défaut.
Il lance mysqldump sur la base alors qu'elle est toujours en usage, donc sur des bases utilisées au moment du dump.

Soit il lock globalement et le mysql risque fort d'exploser pendant ce temps là (Toutes les requêtes en écriture sont en attente, si le dump dure plusieurs minutes ça peut suffire à saturer mysql).
Soit il dump & lock seulement par table, ce qui peut poser le même problème mais qui peut surtout conduire à des données inconsistantes.
( Une clé externe référencées dans une table mais qui n'existait pas au moment du dump de sa table, fait auparavant).

Pour régler le problème du lock, faire un snapshot lvm avec flush & lock juste avant et unlock juste après, ça prend une à trois secondes.
Ensuite, rsync de /var/lib/mysql puis dump sur une autre machine.

SSL pour sécuriser l'échange

Ajouter le paramètre --ssl
mysql --ssl -u UTILISATEUR_MYSQL -pPASSWORD_UTILISATEUR -h ADRESSE_DU_SERVEUR -D Nom_de_la_base_de_données -e 'SELECT * FROM la_table'
# Depuis Linux Mint
WARNING: --ssl is deprecated and will be removed in a future version. Use --ssl-mode instead.
# L'option --ssl est dépréciée et à remplacer par --ssl-mode=REQUIRED
# Source complémentaire : https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-11.html
# Depuis Debian Stretch Stable, pas de message d'alerte, le paramètre --ssl-mode=REQUIRED n'est pas reconnu.

Utiliser un mot de passe en ligne de commande peut être non sécurisé

mysql: [Warning] Using a password on the command line interface can be insecure.
Avec un password en ligne de commande, la commande bash lancée se retrouve dans l'historique du système.
Une solution pour empêcher l'affichage en clair dans le terminal est d'utiliser un fichier de configuration avec des droits limités.
# Le fichier de configuration mysql.cnf
[client]
user=Utilisateur_MySQL
password=Mot_de_passe
host=IP_ou_domaine
Appliquer un chmod 600 sur le fichier de configuration.
# Le script qui se connecte à la base de données.
# Appeler le fichier de configuration avec --defaults-file ou --defaults-extra-file
mysql --defaults-extra-file=/home/utilisateur/mysql.cnf --ssl -D Nom_de_la_base_de_données -e 'show tables'

Afficher le max ID d'une table

max_id=$(echo "SELECT MAX(ID_TPays) FROM table_pays" | mysql --ssl -u UTILISATEUR_MYSQL -pPASSWORD_UTILISATEUR -h ADRESSE_DU_SERVEUR -D Nom_de_la_base_de_données)
echo $max_id
Affiche ID_TPays + valeur max.
max_id=$(echo "SELECT MAX(ID_TPays) FROM table_pays" | mysql --ssl -u UTILISATEUR_MYSQL -pPASSWORD_UTILISATEUR -h ADRESSE_DU_SERVEUR -D Nom_de_la_base_de_données -N)
echo $max_id
Avec le paramètre -N affiche uniquement la valeur max.
var=$(echo "SELECT count(ID_TPays) FROM table_pays" | mysql --ssl -u UTILISATEUR_MYSQL -pPASSWORD_UTILISATEUR -h ADRESSE_DU_SERVEUR -D Nom_de_la_base_de_données)
echo $max_id
Affiche ID_TPays + valeur max.
var=$(echo "SELECT count(ID_TPays) FROM table_pays" | mysql --ssl -u UTILISATEUR_MYSQL -pPASSWORD_UTILISATEUR -h ADRESSE_DU_SERVEUR -D Nom_de_la_base_de_données -N)
echo $max_id
Avec le paramètre -N affiche uniquement la valeur max.

Informations complémentaires pour MySQL

A relire

Avant d'ajouter une quelconque information de votre base de données, échaper les caractères spéciaux à l'aide de la commande mysql_real_escape_string() :
Code PHP :
$chaine = mysql_real_escape_string($chaine);
Avant de vérifier une information sensible dans la BDD comme le nom d'un utilisateur et son mot de passe, il faut toujours s'assurer que l'on n'entre pas de caractères spéciaux qui pourraient corrompre la requête.
Code PHP :
(string)$utilisateur = trim(htmlspecialchars(addslashes($utilisateur)));
(string)$motDePasse = trim(htmlspecialchars(addslashes($motDePasse)));
(array)$interdit = array(
'/&/', '/#/', '/\[/', '/\]/', '/\//', '/\'/', '/%/', '/=/',
'/\(/', '/\)/', '/;/', '/--/', '/=/', '/ /', '/,/',
'/(\<|\>|;|UNION|ALL|SELECT|WHERE|AND|OR|FROM|COUNT)/', '/\*/');
foreach ( $interdit as $valeur ) {
 if ( preg_match($valeur, $utilisateur) || preg_match($valeur, $motDePasse) ) {
  die ('Caractère interdit : tentative d\'injection SQL ?!');
  }
}
Dernier point, et non des moindres, créer un utilisateur ayant des droits restreints pour toutes transactions.
Notamment, la base information_schema ne doit pas pouvoir être lue.
Pour ce faire, il suffit de créer un utilisateur et de lui affecter les drois minimums sur la BDD utilisée :
[email protected] # mysql -u root -p -h localhost
mysql > CREATE USER `utilisateur_restreint`@`localhost`;
mysql > SET PASSWORD FOR `utilisateur_restreint`@`localhost`=PASSWORD('mdp_complexe');
mysql > GRANT INSERT, SELECT, UPDATE, DELETE on `base`.* to `utilisateur_restreint`@`localhost`;
mysql > quit 
Tel que créé ci-dessus, votre utilisateur utilisateur_restreint pourra interroger, insérer et supprimer des données dans la/les table(s) de la base de données base mais n'aura absolument aucun accès aux autres bases.

Les pays du monde

Liste des pays du monde, au format .sql : https://github.com/umpirsky/country-list

Bibliographie

Ok.png MySQL Dump : https://technique.arscenic.org/lamp-linux-apache-mysql-php/mysql-le-serveur-de-bases-de-donnees/article/utiliser-mysql-en-ligne-de-commande
Ok-ko.png Manipulation de tables : https://fr.wikibooks.org/wiki/MySQL/Manipulation_de_table
Ok-ko.png Exemples d'utilisation de mysql en ligne de commande : https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_Beginner.html

NAVIGATION

COMPRENDRE LA BLOCKCHAIN PAR LA PRATIQUE

Obtenir gratuitement de la cryptomonnaie sur internet : https://www.visionduweb.eu/forum/bitcoin/1597-gagner-des-bitcoins-miner-des-bitcoins

PARTICIPER ET PARTAGER

Vous êtes sur le HackerSpace de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
Pourquoi utiliser GNU/Linux ? Y'a moins bien, mais, c'est beaucoup plus cher.
GNU/Linux, hackerspace, opensource, logiciels libres et transition écologique.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Les informations présentes sur cette page sont issues d'une recherche personnelle.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Pour écrire en Markdown : Éditeur - Générateur de tableau 1 - Générateur de tableau 2.
Vous pouvez partager les articles du wiki avec l'ensemble de la communauté des internautes.
Les recherches sur la sécurité servent à administrer et protéger votre système informatique.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

SOUTENIR VISIONDUWEB

Soutenir Vision du web avec des Bitcoins : 33ZsupGQr1rUmwj62HadcZ55hsGJajD9wN
Soutenir Vision du web avec des Bitcoins Cash : 15q5xAVFGpMbqgKsr8uhXymTv7kLfke7hq
Soutenir Vision du web avec des Bitcoins Gold : GNcVseSdiEGRzKYwZWeCbGGg1sZ6Nax172
Soutenir Vision du web avec des Bitcore (BTX) : 1Ks9FDF4FVauAHBCpBFKySiSmD8LaQhqDH
Soutenir Vision du web avec des Blackcoins : BKYBEhQGm9ExrYoWzbvmHA491sK2ArxFM6
Soutenir Vision du web avec des Bytecoins : 241LTEY5L3CSTN2afYf97obxGp4ahUYnq5jDwx5b15NQDothce8fpUeKA32X5SrJuDPBgXTsSmQRoAbCzcDvM2d2Pe9w6AY
Soutenir Vision du web avec des Clams : xMF9u1evuiN2zzEjg2KhgeYPcCLU84Ki5T
Soutenir Vision du web avec des Dash : Xd4vJFnWy27be8cLGSiXVYzP6nKFbdHATU
Soutenir Vision du web avec des Monero : 469EK3yr8JbNe3Gf1rXHD81zcHT7o1hTsDxqvWtxunnaTDLVNiXQ2NyWbwaVe4vUMveKAzAiA4j8xgUi29TpKXpm413rpYt
Soutenir Vision du web avec des Dogecoins : A64jhqCgsUyrUCPte6fV3BcG2Y7daH13Ym
Soutenir Vision du web avec des Ethereum : 0x0E4D6B7A1F88A56A1A66bf408c72FAE3d104D632
Soutenir Vision du web avec des Ethereum Classique : 0x633d83a4ab31e63d76d01edb660ecca4498ef8fa
Soutenir Vision du web avec des Litecoins : 3LKigW6TCS5MvXrZFGh8VMEtZf6MtE86iz
Soutenir Vision du web avec des Potcoins : PUYvjeJ3n2frypgD5yd95yNnwoztnZL5P3
Soutenir Vision du web avec des Solarcoins : 8aYbMcAL68U8f3c3o5pEKUKeWxx48gU1eq
Soutenir Vision du web avec des Zcash : t1Tkiv7nTt9Gwwui9ifsBdp37dTnRG7oYHp