Project

General

Profile

Database Server Installation Shared » History » Version 25

Neil Voss, 05/12/2010 08:49 AM

1 1 Amber Herold
h1. Database Server Installation
2
3
h2. Install MySQL 
4
5
The following is for the computer that hosts the databases. This involves installing MySQL server and creation/configuration of the leginondb and projectdb databases.
6
7 16 Neil Voss
*Note:* You may already have MySQL Server and Client installed. Check by typing mysql at the command line. 
8
If you see a MySQL prompt (mysql>), skip to step 2
9 1 Amber Herold
 
10 15 Neil Voss
h3. Install MySQL-Server and MySQL-Client
11 1 Amber Herold
12 15 Neil Voss
To install Mysql on Linux you have two options (the first option is better):
13 1 Amber Herold
14 15 Neil Voss
# Use your package installer (yum, zypper, YaST, apt-get). For example:
15
<pre>sudo yum install mysql mysql-server</pre>
16
# Download the latest MySQL-server package for Linux from http://www.mysql.com
17 1 Amber Herold
18 15 Neil Voss
h3. Example MySQL configuration files are usually located in /usr/share/mysql.
19 1 Amber Herold
20
<pre>
21
ls /usr/share/mysql/my*
22 15 Neil Voss
    /usr/share/mysql/my-huge.cnf
23
    /usr/share/mysql/my-innodb-heavy-4G.cnf
24
    /usr/share/mysql/my-large.cnf
25
    /usr/share/mysql/my-medium.cnf
26
    /usr/share/mysql/my-small.cnf
27 20 Neil Voss
</pre>
28
If that does not work try the locate function
29
<pre>
30 15 Neil Voss
locate my | egrep "\.cnf$"
31
    /etc/my.cnf
32 1 Amber Herold
    /usr/share/mysql/my-huge.cnf
33
    /usr/share/mysql/my-innodb-heavy-4G.cnf
34
    /usr/share/mysql/my-large.cnf
35
    /usr/share/mysql/my-medium.cnf
36
    /usr/share/mysql/my-small.cnf
37 3 Amber Herold
</pre>
38 1 Amber Herold
39 15 Neil Voss
h3. Configure my.cnf in /etc using my-huge.cnf as the template
40 1 Amber Herold
41 18 Neil Voss
# Copy my-huge.cnf to my.cnf
42 19 Neil Voss
<pre>sudo cp -v /usr/share/mysql/my-huge.cnf /etc/my.cnf</pre>
43 22 Neil Voss
# Edit /etc/my.cnf to add or change query cache variables like these (be sure to place them under the @[mysqld]@ section):
44 1 Amber Herold
<pre>
45 11 Neil Voss
query_cache_type= 1
46 1 Amber Herold
query_cache_size = 100M
47
query_cache_limit= 100M
48 21 Neil Voss
</pre>
49 11 Neil Voss
# Search for the text default-storage-engine in /etc/my.cnf.  If it exists and is set to other than MyISAM, you should change it to:
50 1 Amber Herold
<pre>default-storage-engine=MyISAM</pre>
51 10 Neil Voss
52 22 Neil Voss
h3. Start the MySQL Server
53 1 Amber Herold
54 10 Neil Voss
For CentOS/Fedora/RHEL system use the service command:
55
56 1 Amber Herold
<pre>
57 10 Neil Voss
sudo /sbin/service mysqld start
58 1 Amber Herold
</pre>
59
60 10 Neil Voss
For other Unix systems:
61
62
<pre>
63
sudo /etc/init.d/mysqld start
64
</pre>
65
66 12 Neil Voss
or on some installations,
67 1 Amber Herold
68
<pre>
69 10 Neil Voss
sudo /etc/init.d/mysql start
70 1 Amber Herold
</pre>
71
72
For future reference: start | stop | restart MySQL Server with similar commands:
73
74
<pre>
75 10 Neil Voss
sudo /etc/init.d/mysqld start
76
sudo /etc/init.d/mysqld stop
77
sudo /etc/init.d/mysqld restart
78
sudo /sbin/service mysqld start
79
sudo /sbin/service mysqld stop
80
sudo /sbin/service mysqld restart
81 1 Amber Herold
</pre>
82
83 12 Neil Voss
If you want to start MySQL automatically at boot
84 1 Amber Herold
85
<pre>
86 23 Neil Voss
sudo /sbin/chkconfig mysql on
87 1 Amber Herold
</pre>
88 23 Neil Voss
or for SuSe:
89
<pre>
90
sudo /sbin/chkconfig mysql on
91
</pre>
92 1 Amber Herold
93
h3. 6. For future reference, the database location will be:
94
95 10 Neil Voss
<pre>
96
ls /var/lib/mysql
97 11 Neil Voss
    ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.sock  test
98 1 Amber Herold
</pre>
99
100
h3. 7. Create the Leginon database, call it leginondb
101 3 Amber Herold
102 1 Amber Herold
<pre>
103 10 Neil Voss
sudo mysqladmin create leginondb
104 1 Amber Herold
</pre>
105
106
h3. 8. Create the Project database, call it projectdb
107
108
<pre>
109
sudo mysqladmin create projectdb
110
</pre>
111
112 11 Neil Voss
h3. 9. Connect to mysql db
113
114 1 Amber Herold
If starting from scratch the mysql root user will have no password. To set the root password use the command: @sudo mysqladmin -u root password NEWPASSWORD@
115
116 23 Neil Voss
<pre>
117 11 Neil Voss
mysql -u root -p mysql
118 23 Neil Voss
</pre>
119 1 Amber Herold
120 11 Neil Voss
<pre>
121
mysql> select user, password, host from user;
122 1 Amber Herold
      +------+----------+-----------+
123
      | user | password | host      |
124
      +------+----------+-----------+
125
      | root |          | localhost |
126
      | root |          | host1     |
127
      |      |          | host1     |
128
      |      |          | localhost |
129
      +------+----------+-----------+
130
      4 rows in set (0.00 sec)
131
</pre>
132
133
h3. 10. Create user
134
135 25 Neil Voss
Create and grant privileges to a user called usr_object for the databases on both the localhost and other hosts involved. For example, use wild card '%' for all hosts. You can set specific (@create, select, update, alter, drop, delete, show, describe, rename@) privileges or @ALL@ privileges to the user. See MySQL Reference Manual for details.
136 3 Amber Herold
137 1 Amber Herold
<pre>
138 24 Neil Voss
mysql> CREATE USER usr_object@'localhost' IDENTIFIED BY 'PASSWORD';
139
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON leginondb.* TO usr_object@'localhost';
140
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON projectdb.* TO usr_object@'localhost';
141 1 Amber Herold
</pre>
142
143 25 Neil Voss
less secure version (no password and all privileges), we recommend not allowing the DROP and DELETE privileges.
144 1 Amber Herold
145
<pre>
146 24 Neil Voss
mysql> CREATE USER usr_object@'localhost';
147
mysql> GRANT ALL PRIVILEGES ON leginondb.* TO usr_object@'localhost';
148
mysql> GRANT ALL PRIVILEGES ON projectdb.* TO usr_object@'localhost';
149 1 Amber Herold
</pre>
150
151 24 Neil Voss
Similarly, you can assign a domain
152
153
<pre>
154
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON leginondb.* to usr_object@<host.mydomain.edu>;
155
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON projectdb.* to usr_object@<host.mydomain.edu>;
156
</pre>
157
158 3 Amber Herold
Next, give create and access privileges for the processing databases which begin with "ap".
159 1 Amber Herold
160 10 Neil Voss
<pre>
161 24 Neil Voss
# if your web host is local
162
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON `ap%`.* to usr_object@localhost; 
163
# for all other hosts if you are accessing the databases from another computer
164
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON `ap%`.* to usr_object@<host.mydomain.edu>;       
165 1 Amber Herold
</pre>
166
167
h3. 11. Change Root password
168 12 Neil Voss
169 1 Amber Herold
<pre>
170 10 Neil Voss
171
mysql> update user set password=password('your_own_root_password') where user="root";
172
Query OK, 2 rows affected (0.01 sec)
173
Rows matched: 2  Changed: 2  Warnings: 0
174
175
mysql> flush privileges;
176 12 Neil Voss
mysql>^D or exit;
177 10 Neil Voss
</pre>
178 3 Amber Herold
179 1 Amber Herold
180 3 Amber Herold
From now on, you will need to specify the password to connect to the database as root user like this:
181 1 Amber Herold
182
<pre>
183
      >mysql -u root -p mysql
184
</pre>
185
186
h3. 12. Check MySQL variables
187
188
<pre>
189
      >mysql -u usr_object leginondb
190
191
      mysql> SHOW VARIABLES LIKE 'query%';
192
      +------------------------------+-----------+
193
      | Variable_name                | Value     |
194
      +------------------------------+-----------+
195
      | ft_query_expansion_limit     | 20        |
196
      | have_query_cache             | YES       |
197
      | long_query_time              | 10        |
198
      | query_alloc_block_size       | 8192      |
199
      | query_cache_limit            | 104857600 | <<---This should correspond to your change
200
      | query_cache_min_res_unit     | 4096      |
201
      | query_cache_size             | 104857600 | <<---This should correspond to your change
202
      | query_cache_type             | ON        | <<---This should correspond to your change
203
      | query_cache_wlock_invalidate | OFF       |
204
      | query_prealloc_size          | 8192      |
205
      +------------------------------+-----------+
206
      10 rows in set (0.00 sec)
207
208
      mysql> exit;
209
</pre>
210
211
h3. 13. Make sure MySQL is running
212
213
<pre>
214
      prompt:~> mysqlshow
215
      +--------------+
216
      | Databases    |
217
      +--------------+
218
      | mysql        |
219
      | leginondb    |
220
      | projectdb    |
221
      +--------------+
222 3 Amber Herold
</pre>
223 1 Amber Herold
224
h3. 14. Or check with the following php script (if already installed)
225
226
<pre>
227 3 Amber Herold
      <?
228 1 Amber Herold
      mysql_connect('your_host.your_institute.edu', 'usr_object', '','leginondb');
229 3 Amber Herold
      echo mysql_stat();
230 1 Amber Herold
      ?> 
231 3 Amber Herold
</pre>
232 1 Amber Herold
233 3 Amber Herold
Output:
234 1 Amber Herold
235
<pre>
236
       Uptime: 1452562 Threads: 1 Questions: 618 Slow queries: 0 Opens: 117 Flush tables: 1 Open tables: 106 Queries per second avg: 0.000
237
</pre>
238
239
h2. Configure phpMyAdmin 
240
241
Edit the phpMyAdmin config file:
242
243
<pre>
244
$ sudo vi /etc/phpMyAdmin/config.inc.php
245
</pre> 
246
247
and change the following lines:
248
249
<pre>
250
$cfg['Servers'][$i]['AllowRoot']     = FALSE;
251
</pre>
252
253
Edit the phpMyAdmin apache config file:
254
255 12 Neil Voss
<pre>
256 1 Amber Herold
$ sudo $EDITOR /etc/httpd/conf.d/phpMyAdmin.conf
257
</pre>
258
259
and change the following lines:
260
261
*Note:* If you want to access phpMyAdmin from another computer, you can add it to its web access configuration file found as /etc/httpd/conf.d/phpMyAdmin.conf in a typical installation
262
263
<pre>
264
<Directory /usr/share/phpMyAdmin/>
265
   order deny,allow
266
   deny from all
267
   allow from 127.0.0.1
268
   allow from YOUR_IP_ADDRESS
269
</Directory>
270
</pre>
271
272
To test the PHPMyAdmin configuration, point your browser to http://YOUR_IP_ADDRESS/phpmyadmin.