- Après un kernel panic.
- Après un partitionnement ou des modifications sur le système de fichiers (redimensionnement de /).
- Après la mise à niveau du noyau et ou le passage de correctifs de sécurité (cela n’est cependant pas toujours nécessaire).
- Après le système ne répondait plus pour une raison quelconque, et vous avez pas d’autre choix que d’utiliser les Magic Keys ou de faire un reboot brutal.
- Après avoir modifié certains schémas gconf, cela peut être nécessaire.
- Quand le CPU surchauffe.
Catégorie : Systèmes
Si vous tombez sur cette erreur:
mysql> create database nom_utilisateur;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
Pour la résoudre, il suffit de définir un password à l’utilisateur (ici root) qui sert d’opérateur :
mysql
set password for root@'localhost' = PASSWORD('nouveau_passwd');
Voici un petit mémo qui montre comment changer le répertoire de données MySQL par défaut, puis à régler SELinux pour qu’il tienne compte des changements.
Arrêt du serveur MySQL:
service mysqld stop
Création d’un nouveau répertoire de données:
mkdir /nouveau/repertoire/mysql
chown mysql:mysql /nouveau/repertoire/mysql
Déplacer la base de données d’origine:
mv /var/lib/mysql/* /nouveau/repertoire/mysql
Modification du fichier de configuration MySQL:
vi /etc/mysql/my.cnf
Et on y change cette ligne:
datadir = /var/lib/mysql
devient:
datadir = /nouveau/repertoire/mysql
ainsi que celle la:
socket = /var/lib/mysql/mysql.sock
qui devient:
socket = /nouveau/repertoire/mysql/mysql.sock
Mappage du contexte SELinux pour le répertoire /nouveau/repertoire/mysql/ , avec la commande semanage:
semanage fcontext -a -t mysqld_db_t "/nouveau/repertoire/mysql(/.*)?"
Application du contexte pour une prise en compte par le système à chaud:
restorecon -Rv /nouveau/repertoire/mysql/
Démarrage du serveur MySQL:
service mysqld start
Vérification de l’accès et de la connectivité:
mysql -u root -p
mysql> show databases;
Si cela fonctionne, vous avez changé le répertoire par défaut de MySQL avec une prise en compte par SELinux avec succès.
Par contre si vous obtenez un message de ce genre:
ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local par socket '/var/lib/mysql/mysql.sock'
Il faudra ajouter cela à votre fichier /etc/my.cnf :
[client]
socket = /srv/mysql/mysql.sock
Et dernière chose, pour éviter la connexion via le socket:
mysql -u root -p --protocol tcp
Telnet, (depuis un serveur distant)
telnet 192.168.0.14 20000
Si le port est ouvert:
Trying 192.168.0.14...
Connected to entropia (192.168.0.14).
Escape character is '^]'.
Si le port est fermé (ou service non démarré):
Trying 192.168.0.14...
telnet: connect to address 192.168.0.14: Connection refused
telnet: Unable to connect to remote host: Connection refused
Netstat, (pour tester en local)
netstat -paunt | grep 3306; echo $?
Si le port est ouvert:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1979/mysqld
0
Si le port est fermé (ou service non démarré):
1
Netcat, (depuis un serveur distant)
nc -v -z 192.168.0.14 3306; echo $?
Si le port est ouvert:
Connection to 192.168.0.14 3306 port [tcp/mysql] succeeded!
0
Si le port est fermé (ou service non démarré):
nc: connect to 192.168.0.14 port 3306(tcp) failed: Connection refused
1
nc 192.168.0.14 3306< /dev/null ; echo $?
Si le port est ouvert:
4
5.1.73▒d))4f*<,i▒N*'%#~rC8/#`0
Si le port est fermé (ou service non démarré):
1
Wget pour tester un serveur web, (depuis un serveur distant)
wget -qO- 192.168.0.14:80 ; echo $?
wget -q --spider 192.168.0.14:80 ; echo $?
Curl, (depuis un serveur distant)
curl telnet://192.168.0.14:22
Si le port est ouvert, la commande restera bloquée car elle attend que l’on saisisse quelque chose. ctrl+c pour sortir.
Si le port est fermé:
curl: (7) couldn't connect to host
Bash, (depuis un serveur distant)
timeout 1 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.14/22' ; echo $?
Si le port est ouvert:
0
Si le port est fermé:
bash: connect: Connexion refusée
bash: /dev/tcp/192.168.0.14/22: Connexion refusée
1
Nmap, (depuis un serveur distant)
nmap -p 80 192.168.0.14
Si le port est ouvert:
Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:00 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00068s latency).
PORT STATE SERVICE
80/tcp open http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
Si le port est fermé:
Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:06 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00045s latency).
PORT STATE SERVICE
80/tcp closed http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
Pour tester plusieurs port en même temps:
nmap -p 22,1944,20000 192.168.0.14
Python, (depuis un serveur distant)
python
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.0.14' , 80))
clientsocket.sent('\n')
Si le port est ouvert, vous arriverez à faire un « clientsocket.sent(‘\n’) » (qui vous retournera surement cette une erreur):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_socketobject' object has no attribute 'sent'
Si le port est fermé, au moment du « clientsocket.connect((‘192.168.0.14’ , 80)) » :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused
Il peut être parfois utile de pouvoir identifier facilement un port réseau sur un serveur lors des opération de brassage.
Pour identifier facilement une carte, on peut utiliser la commande ethtool et son option -p (ou –identify) pour faire clignoter la diode d’activitée (celle des données) durant une durée déterminé.
Pour faire clignoter la carte eth0 pendant 5 seconde:
ethtool -p eth0 5
Pour faire clignoter la carte eth0 indéfiniment:
ethtool -p eth0