Project

General

Profile

MySQLInitConf » History » Version 20

Simone Piccardi, 02/10/2014 10:11 PM

1 17 Simone Piccardi
h1. Configurazione di base per _MySQL_
2 16 Amministratore Truelite
 
3 1 Amministratore Truelite
4 17 Simone Piccardi
La configurazione di base di _MySQL_ eseguita da Debian subito dopo l'installazione del pacchetto consente l'accesso database con l'utente di amministrazione _root_ senza password. Per questo motivo il primo passo da fare, immediatamente dopo l'installazione, è impostare una password per _root_; questo si fa con il comando:
5 1 Amministratore Truelite
6 1 Amministratore Truelite
<pre>
7 18 Simone Piccardi
/usr/bin/mysqladmin -u root password NuovaPassword
8 11 Amministratore Truelite
</pre>
9 11 Amministratore Truelite
10 17 Simone Piccardi
Se invece si è persa la password di _root_ del database il precedente comando non funziona in quanto una volta impostata detta password questa diventa necessaria per poterlo utilizzare. Per questo per poterla recuperare (o meglio resettare) occorre seguire la seguente procedura. Il primo passo è fermare il database e farlo ripartire senza meccanismi di controllo di autenticazione, questo si fa con i comandi:
11 1 Amministratore Truelite
12 16 Amministratore Truelite
<pre>
13 1 Amministratore Truelite
/etc/init.d/mysql stop
14 1 Amministratore Truelite
/usr/bin/mysqld_safe --skip-grant-tables --skip-networking &
15 16 Amministratore Truelite
</pre>
16 1 Amministratore Truelite
17 1 Amministratore Truelite
a questo punto ci si potrà collegare al database direttamente con:
18 1 Amministratore Truelite
19 16 Amministratore Truelite
<pre>
20 10 Amministratore Truelite
mysql -u root
21 16 Amministratore Truelite
</pre>
22 1 Amministratore Truelite
23 10 Amministratore Truelite
ottenendo una shell SQL con privilegi di amministrazione; qui si potrà modificare la password impostata per l'utente _root_ tramite le seguenti istruzioni:
24 16 Amministratore Truelite
25 10 Amministratore Truelite
<pre>
26 16 Amministratore Truelite
use mysql;
27 1 Amministratore Truelite
UPDATE user SET Password=PASSWORD("NuovaPassword") WHERE User="root";
28 1 Amministratore Truelite
exit
29 16 Amministratore Truelite
</pre>
30 10 Amministratore Truelite
31 17 Simone Piccardi
fatto questo la passord di _root_ è stata modificata e si potrà fermare il database e riavviarlo con:
32 10 Amministratore Truelite
33 10 Amministratore Truelite
<pre>
34 1 Amministratore Truelite
/etc/init.d/mysql stop
35 16 Amministratore Truelite
/etc/init.d/mysql start
36 8 Amministratore Truelite
</pre>
37 9 Amministratore Truelite
38 17 Simone Piccardi
Dopo di che si potrà verificare che l'accesso è possibile con la nuova password con:
39 1 Amministratore Truelite
40 16 Amministratore Truelite
<pre>
41 1 Amministratore Truelite
server:~# mysql -u root -p
42 1 Amministratore Truelite
Enter password:
43 16 Amministratore Truelite
Welcome to the [[MySQL]] monitor.  Commands end with ; or \g.
44 16 Amministratore Truelite
Your [[MySQL]] connection id is 9 to server version: 4.0.24_Debian-5-log
45 1 Amministratore Truelite
46 1 Amministratore Truelite
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
47 1 Amministratore Truelite
48 1 Amministratore Truelite
mysql> show databases;
49 1 Amministratore Truelite
+-------------+
50 1 Amministratore Truelite
| Database    |
51 1 Amministratore Truelite
+-------------+
52 1 Amministratore Truelite
| mysql       |
53 1 Amministratore Truelite
| test        |
54 1 Amministratore Truelite
+-------------+
55 1 Amministratore Truelite
2 rows in set (0.00 sec)
56 1 Amministratore Truelite
57 1 Amministratore Truelite
mysql> \q
58 1 Amministratore Truelite
Bye
59 16 Amministratore Truelite
server:~#
60 1 Amministratore Truelite
</pre>
61 9 Amministratore Truelite
62 20 Simone Piccardi
Qualora invece si debba ricreare da zero l'utente root nel caso di errata cancellazione, sarà necessario reimpostare manualmente tutti i privilegi con qualcosa del tipo:
63 20 Simone Piccardi
64 20 Simone Piccardi
<pre>
65 20 Simone Piccardi
INSERT INTO mysql.user SET user = 'root',
66 20 Simone Piccardi
      host = 'localhost',
67 20 Simone Piccardi
      password = Password('passwordlungaecomplicata'),
68 20 Simone Piccardi
      super_priv = 'y',
69 20 Simone Piccardi
      select_priv = 'y',
70 20 Simone Piccardi
      insert_priv = 'y',
71 20 Simone Piccardi
      update_priv = 'y',
72 20 Simone Piccardi
      delete_priv = 'y',
73 20 Simone Piccardi
      create_priv = 'y',
74 20 Simone Piccardi
      drop_priv = 'y',
75 20 Simone Piccardi
      reload_priv = 'y',
76 20 Simone Piccardi
      shutdown_priv = 'y',
77 20 Simone Piccardi
      process_priv = 'y',
78 20 Simone Piccardi
      file_priv = 'y',
79 20 Simone Piccardi
      grant_priv = 'y',
80 20 Simone Piccardi
      references_priv = 'y',
81 20 Simone Piccardi
      index_priv = 'y',
82 20 Simone Piccardi
      alter_priv = 'y',
83 20 Simone Piccardi
      show_db_priv = 'y',
84 20 Simone Piccardi
      create_tmp_table_priv = 'y',
85 20 Simone Piccardi
      lock_tables_priv = 'y',
86 20 Simone Piccardi
      execute_priv = 'y',
87 20 Simone Piccardi
      repl_slave_priv = 'y',
88 20 Simone Piccardi
      repl_client_priv = 'y',
89 20 Simone Piccardi
      create_view_priv = 'y',
90 20 Simone Piccardi
      show_view_priv = 'y',
91 20 Simone Piccardi
      create_routine_priv = 'y',
92 20 Simone Piccardi
      alter_routine_priv = 'y',
93 20 Simone Piccardi
      create_user_priv = 'y';
94 20 Simone Piccardi
</pre>
95 20 Simone Piccardi
96 17 Simone Piccardi
Si tenga presente infine che le ultime versioni del pacchetto Debian non richiedono più un intervento manuale per abilitare l'ascolto su @localhost@ in quanto la riga:
97 1 Amministratore Truelite
98 16 Amministratore Truelite
<pre>
99 1 Amministratore Truelite
bind-address            = 127.0.0.1
100 16 Amministratore Truelite
</pre>
101 1 Amministratore Truelite
102 19 Simone Piccardi
è già presente in @/etc/my.cnf@; occorrerà eventualmente modificarla qualora si debba invece abilitare il raggiungimento del server da altre macchine, in tal caso occorrerà inserire qualcosa del tipo:
103 1 Amministratore Truelite
104 19 Simone Piccardi
<pre>
105 19 Simone Piccardi
bind-address            = 0.0.0.0
106 19 Simone Piccardi
</pre>
107 19 Simone Piccardi
108 19 Simone Piccardi
109 1 Amministratore Truelite
Fatto questo si potrà passare alla creazione di un proprio database con il comando:
110 18 Simone Piccardi
111 16 Amministratore Truelite
<pre>
112 3 Amministratore Truelite
mysqladmin -u root -p create nomedb
113 1 Amministratore Truelite
</pre>
114 18 Simone Piccardi
115 1 Amministratore Truelite
che chiederà la precedente password, creando il database, a questo punto ci si potrà collegare al nuovo database con:
116 18 Simone Piccardi
117 16 Amministratore Truelite
<pre>
118 3 Amministratore Truelite
mysql -u root -p nomedb
119 1 Amministratore Truelite
</pre>
120 18 Simone Piccardi
121 1 Amministratore Truelite
e si potrà dare l'accesso allo stesso ad uno specifico utente con i comandi:
122 18 Simone Piccardi
123 16 Amministratore Truelite
<pre>
124 15 Amministratore Truelite
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, DROP 
125 12 Amministratore Truelite
ON nomedb.* TO 'utentedb'@'localhost' IDENTIFIED BY 'password';
126 1 Amministratore Truelite
</pre>
127 18 Simone Piccardi
128 1 Amministratore Truelite
e per garantirsi che questi siano immediatamente disponibili, si dovrà aggiuntere:
129 18 Simone Piccardi
130 16 Amministratore Truelite
<pre>
131 6 Amministratore Truelite
FLUSH PRIVILEGES;
132 16 Amministratore Truelite
</pre>
133 5 Amministratore Truelite
134 1 Amministratore Truelite
Nel caso si sia fatto un errore nell'assegnare i permessi e nel creare l'utente, lo si potrà cancellare con i comandi:
135 18 Simone Piccardi
136 16 Amministratore Truelite
<pre>
137 1 Amministratore Truelite
use mysql;
138 1 Amministratore Truelite
DELETE FROM user WHERE user="utentedacancellare";
139 19 Simone Piccardi
</pre>
140 19 Simone Piccardi
141 19 Simone Piccardi
Nel caso si voglia cancellare completamente un database si potrà farlo sia con i comandi SQL specifici (@DROP DATABASE nomedb@) da dentro la riga di comando di @mysql@ oppure direttamente dalla della shell con il comando:
142 19 Simone Piccardi
143 19 Simone Piccardi
<pre>
144 19 Simone Piccardi
mysqladmin -u root -p drop nomedb
145 16 Amministratore Truelite
</pre>