Project

General

Profile

Database Server Installation Shared » History » Version 26

Neil Voss, 05/12/2010 08:51 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 26 Neil Voss
mysql> CREATE USER usr_object@'%' IDENTIFIED BY 'PASSWORD';
155 24 Neil Voss
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON leginondb.* to usr_object@<host.mydomain.edu>;
156
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON projectdb.* to usr_object@<host.mydomain.edu>;
157
</pre>
158
159 3 Amber Herold
Next, give create and access privileges for the processing databases which begin with "ap".
160 1 Amber Herold
161 10 Neil Voss
<pre>
162 24 Neil Voss
# if your web host is local
163
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON `ap%`.* to usr_object@localhost; 
164
# for all other hosts if you are accessing the databases from another computer
165
mysql> GRANT ALTER, CREATE, DESCRIBE, SELECT, SHOW, UPDATE ON `ap%`.* to usr_object@<host.mydomain.edu>;       
166 1 Amber Herold
</pre>
167
168
h3. 11. Change Root password
169 12 Neil Voss
170 1 Amber Herold
<pre>
171 10 Neil Voss
172
mysql> update user set password=password('your_own_root_password') where user="root";
173
Query OK, 2 rows affected (0.01 sec)
174
Rows matched: 2  Changed: 2  Warnings: 0
175
176
mysql> flush privileges;
177 12 Neil Voss
mysql>^D or exit;
178 10 Neil Voss
</pre>
179 3 Amber Herold
180 1 Amber Herold
181 3 Amber Herold
From now on, you will need to specify the password to connect to the database as root user like this:
182 1 Amber Herold
183
<pre>
184
      >mysql -u root -p mysql
185
</pre>
186
187
h3. 12. Check MySQL variables
188
189
<pre>
190
      >mysql -u usr_object leginondb
191
192
      mysql> SHOW VARIABLES LIKE 'query%';
193
      +------------------------------+-----------+
194
      | Variable_name                | Value     |
195
      +------------------------------+-----------+
196
      | ft_query_expansion_limit     | 20        |
197
      | have_query_cache             | YES       |
198
      | long_query_time              | 10        |
199
      | query_alloc_block_size       | 8192      |
200
      | query_cache_limit            | 104857600 | <<---This should correspond to your change
201
      | query_cache_min_res_unit     | 4096      |
202
      | query_cache_size             | 104857600 | <<---This should correspond to your change
203
      | query_cache_type             | ON        | <<---This should correspond to your change
204
      | query_cache_wlock_invalidate | OFF       |
205
      | query_prealloc_size          | 8192      |
206
      +------------------------------+-----------+
207
      10 rows in set (0.00 sec)
208
209
      mysql> exit;
210
</pre>
211
212
h3. 13. Make sure MySQL is running
213
214
<pre>
215
      prompt:~> mysqlshow
216
      +--------------+
217
      | Databases    |
218
      +--------------+
219
      | mysql        |
220
      | leginondb    |
221
      | projectdb    |
222
      +--------------+
223 3 Amber Herold
</pre>
224 1 Amber Herold
225
h3. 14. Or check with the following php script (if already installed)
226
227
<pre>
228 3 Amber Herold
      <?
229 1 Amber Herold
      mysql_connect('your_host.your_institute.edu', 'usr_object', '','leginondb');
230 3 Amber Herold
      echo mysql_stat();
231 1 Amber Herold
      ?> 
232 3 Amber Herold
</pre>
233 1 Amber Herold
234 3 Amber Herold
Output:
235 1 Amber Herold
236
<pre>
237
       Uptime: 1452562 Threads: 1 Questions: 618 Slow queries: 0 Opens: 117 Flush tables: 1 Open tables: 106 Queries per second avg: 0.000
238
</pre>
239
240
h2. Configure phpMyAdmin 
241
242
Edit the phpMyAdmin config file:
243
244
<pre>
245
$ sudo vi /etc/phpMyAdmin/config.inc.php
246
</pre> 
247
248
and change the following lines:
249
250
<pre>
251
$cfg['Servers'][$i]['AllowRoot']     = FALSE;
252
</pre>
253
254
Edit the phpMyAdmin apache config file:
255
256 12 Neil Voss
<pre>
257 1 Amber Herold
$ sudo $EDITOR /etc/httpd/conf.d/phpMyAdmin.conf
258
</pre>
259
260
and change the following lines:
261
262
*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
263
264
<pre>
265
<Directory /usr/share/phpMyAdmin/>
266
   order deny,allow
267
   deny from all
268
   allow from 127.0.0.1
269
   allow from YOUR_IP_ADDRESS
270
</Directory>
271
</pre>
272
273
To test the PHPMyAdmin configuration, point your browser to http://YOUR_IP_ADDRESS/phpmyadmin.