Project

General

Profile

Database Server Installation Shared » History » Version 64

Anchi Cheng, 03/04/2011 02:37 PM

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 38 Amber Herold
8 1 Amber Herold
 
9 42 Amber Herold
h3. 1 Install MySQL-Server and MySQL-Client
10 38 Amber Herold
11
*Note:* You may already have MySQL Server and Client installed. Check by typing mysql at the command line. 
12
If you see a MySQL prompt (mysql>), you may skip this step.
13 1 Amber Herold
14 15 Neil Voss
To install Mysql on Linux you have two options (the first option is better):
15 1 Amber Herold
16 15 Neil Voss
# Use your package installer (yum, zypper, YaST, apt-get). For example:
17 52 Eric Hou
   <pre>sudo yum install mysql mysql-server</pre>
18
   For Suse
19
   <pre>yast2 -i mysql mysql-client</pre>
20 15 Neil Voss
# Download the latest MySQL-server package for Linux from http://www.mysql.com
21 1 Amber Herold
22 42 Amber Herold
h3. 2 Locate Example MySQL configuration files 
23 1 Amber Herold
24 42 Amber Herold
They are usually located in /usr/share/mysql.
25
26 1 Amber Herold
<pre>
27
ls /usr/share/mysql/my*
28 15 Neil Voss
    /usr/share/mysql/my-huge.cnf
29
    /usr/share/mysql/my-innodb-heavy-4G.cnf
30
    /usr/share/mysql/my-large.cnf
31
    /usr/share/mysql/my-medium.cnf
32
    /usr/share/mysql/my-small.cnf
33 20 Neil Voss
</pre>
34
If that does not work try the locate function
35
<pre>
36 15 Neil Voss
locate my | egrep "\.cnf$"
37
    /etc/my.cnf
38 1 Amber Herold
    /usr/share/mysql/my-huge.cnf
39
    /usr/share/mysql/my-innodb-heavy-4G.cnf
40
    /usr/share/mysql/my-large.cnf
41
    /usr/share/mysql/my-medium.cnf
42
    /usr/share/mysql/my-small.cnf
43 3 Amber Herold
</pre>
44 1 Amber Herold
45 42 Amber Herold
h3. 3 Configure my.cnf in /etc using my-huge.cnf as the template
46 1 Amber Herold
47 18 Neil Voss
# Copy my-huge.cnf to my.cnf
48 19 Neil Voss
<pre>sudo cp -v /usr/share/mysql/my-huge.cnf /etc/my.cnf</pre>
49 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):
50 1 Amber Herold
<pre>
51 39 Amber Herold
query_cache_type = 1
52 1 Amber Herold
query_cache_size = 100M
53 21 Neil Voss
query_cache_limit= 100M
54 1 Amber Herold
</pre>
55 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:
56 1 Amber Herold
<pre>default-storage-engine=MyISAM</pre>
57 10 Neil Voss
58 42 Amber Herold
h3. 4 Start the MySQL Server
59 1 Amber Herold
60 10 Neil Voss
For CentOS/Fedora/RHEL system use the service command:
61
62 1 Amber Herold
<pre>
63 10 Neil Voss
sudo /sbin/service mysqld start
64 1 Amber Herold
</pre>
65
66 10 Neil Voss
For other Unix systems:
67
68
<pre>
69
sudo /etc/init.d/mysqld start
70
</pre>
71
72 53 Eric Hou
or on some installations (Suse),
73 1 Amber Herold
74
<pre>
75 10 Neil Voss
sudo /etc/init.d/mysql start
76 1 Amber Herold
</pre>
77
78
For future reference: start | stop | restart MySQL Server with similar commands:
79
80 54 Eric Hou
For Centos, Fedora
81 1 Amber Herold
<pre>
82 10 Neil Voss
sudo /etc/init.d/mysqld start
83
sudo /etc/init.d/mysqld stop
84
sudo /etc/init.d/mysqld restart
85 54 Eric Hou
</pre>
86
or
87
<pre>
88 1 Amber Herold
sudo /sbin/service mysqld start
89 10 Neil Voss
sudo /sbin/service mysqld stop
90
sudo /sbin/service mysqld restart
91 1 Amber Herold
</pre>
92 54 Eric Hou
or for Suse
93
<pre>
94
sudo /etc/init.d/mysql start
95
sudo /etc/init.d/mysql stop
96
sudo /etc/init.d/mysql restart
97
</pre>
98 42 Amber Herold
99 1 Amber Herold
h3. 5 Configure MySQL to start automatically at boot
100
101
<pre>
102
sudo /sbin/chkconfig mysqld on
103 23 Neil Voss
</pre>
104
or for SuSe:
105 1 Amber Herold
<pre>
106 54 Eric Hou
sudo /sbin/chkconfig --add mysql
107 23 Neil Voss
</pre>
108 1 Amber Herold
109 42 Amber Herold
h3. 6 For future reference, the database location will be:
110 1 Amber Herold
111 10 Neil Voss
<pre>
112
ls /var/lib/mysql
113 1 Amber Herold
    ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.sock  test
114
</pre>
115
116 42 Amber Herold
h3. 7 Create the Leginon database, call it leginondb
117 3 Amber Herold
118 10 Neil Voss
<pre>
119 1 Amber Herold
sudo mysqladmin create leginondb
120
</pre>
121
122 42 Amber Herold
h3. 8 Create the Project database, call it projectdb
123 1 Amber Herold
124
<pre>
125
sudo mysqladmin create projectdb
126
</pre>
127
128 42 Amber Herold
h3. 9 Connect to mysql db
129 11 Neil Voss
130 40 Amber Herold
If starting from scratch, the mysql root user will have no password. This is assumed to be the case and we will set it later.
131 1 Amber Herold
132 23 Neil Voss
<pre>
133 28 Neil Voss
mysql -u root mysql
134 23 Neil Voss
</pre>
135 1 Amber Herold
136 40 Amber Herold
You should see a mysql prompt: mysql>
137
138
You can view the current mysql users with the following command.
139 11 Neil Voss
<pre>
140 40 Amber Herold
select user, password, host from user;
141 1 Amber Herold
      +------+----------+-----------+
142
      | user | password | host      |
143
      +------+----------+-----------+
144
      | root |          | localhost |
145
      | root |          | host1     |
146
      |      |          | host1     |
147
      |      |          | localhost |
148
      +------+----------+-----------+
149
      4 rows in set (0.00 sec)
150
</pre>
151
152 42 Amber Herold
h3. 10 Create user
153 1 Amber Herold
154 41 Amber Herold
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 (@ALTER, CREATE, DROP, DELETE, INSERT, RENAME, SELECT, UPDATE@) privileges or @ALL@ privileges to the user. See MySQL Reference Manual for details. The following examples demonstrate some of the options available.
155 3 Amber Herold
156 36 Amber Herold
At the mysql prompt execute the following commands:
157 1 Amber Herold
<pre>
158 36 Amber Herold
CREATE USER usr_object@'localhost' IDENTIFIED BY 'YOUR PASSWORD';
159
GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON leginondb.* TO usr_object@'localhost';
160
GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON projectdb.* TO usr_object@'localhost';
161 64 Anchi Cheng
</pre>
162
163
After the webserver and myamiweb is installed, you should change privileges of these three tables:
164
<pre>
165 62 Anchi Cheng
GRANT DELETE ON leginondb.ViewerImageStatus TO usr_object@'localhost';
166 63 Eric Hou
GRANT DELETE ON leginondb.ImageStatusData TO usr_object@'localhost';
167 62 Anchi Cheng
GRANT DELETE ON projectdb.processingdb TO usr_object@'localhost';
168 1 Amber Herold
</pre>
169
170 62 Anchi Cheng
If you use Leginon to do robotic grid screening, you will also need to do the following to grant delete privileges to the these tables at the mysql prompt:
171
<pre>
172
GRANT DELETE ON projectdb.gridboxes TO usr_object@'localhost';
173
GRANT DELETE ON projectdb.grids TO usr_object@'localhost';
174
GRANT DELETE ON projectdb.gridlocations TO usr_object@'localhost';
175
</pre>
176 1 Amber Herold
177 62 Anchi Cheng
You may choose to use the following less secure version (no password and all privileges) of the commands above, however, we recommend not allowing the DROP privilege on all tables nor DELETE privilege on most tables.
178
179 36 Amber Herold
At the mysql prompt execute the following commands:
180 24 Neil Voss
<pre>
181 36 Amber Herold
CREATE USER usr_object@'localhost';
182
GRANT ALL PRIVILEGES ON leginondb.* TO usr_object@'localhost';
183 1 Amber Herold
GRANT ALL PRIVILEGES ON projectdb.* TO usr_object@'localhost';
184
</pre>
185 24 Neil Voss
186 41 Amber Herold
You may also choose to assign a domain to your commands and use a wildcard to allow access from all computers in the domain. 
187 26 Neil Voss
188 1 Amber Herold
<pre>
189 36 Amber Herold
CREATE USER usr_object@'%.mydomain.edu' IDENTIFIED BY 'YOUR PASSWORD';
190
GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON leginondb.* to usr_object@'%.mydomain.edu';
191 1 Amber Herold
GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON projectdb.* to usr_object@'%.mydomain.edu';
192 62 Anchi Cheng
GRANT DELETE ON leginondb.ViewerImageStatus TO usr_object@'%.mydomain.edu';
193 63 Eric Hou
GRANT DELETE ON leginondb.ImageStatusData TO usr_object@'%.mydomain.edu';
194
GRANT DELETE ON projectdb.processingdb TO usr_object@'%.mydomain.edu';
195 1 Amber Herold
</pre>
196 62 Anchi Cheng
197
Again, if you use Leginon to do robotic grid screening, you may want to grant delete privileges to the these tables at the mysql prompt:
198
<pre>
199
GRANT DELETE ON projectdb.gridboxes TO usr_object@'%.mydomain.edu';
200
GRANT DELETE ON projectdb.grids TO usr_object@'%.mydomain.edu';
201
GRANT DELETE ON projectdb.gridlocations TO usr_object@'%.mydomain.edu';
202
</pre>
203
 
204 3 Amber Herold
205 42 Amber Herold
h3. 11 Give create and access privileges for the processing databases which begin with "ap".
206 10 Neil Voss
207 24 Neil Voss
<pre>
208 27 Neil Voss
# if your web host is local
209 36 Amber Herold
GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON `ap%`.* to usr_object@localhost; 
210 27 Neil Voss
# for all other hosts if you are accessing the databases from another computer
211 36 Amber Herold
GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON `ap%`.* to usr_object@'%.mydomain.edu';       
212 1 Amber Herold
</pre>
213
214 42 Amber Herold
h3. 12 Change Root password
215 1 Amber Herold
216 28 Neil Voss
To set the root password use the command: 
217 1 Amber Herold
218 28 Neil Voss
<pre>
219
sudo mysqladmin -u root password NEWPASSWORD
220
</pre>
221 1 Amber Herold
222 28 Neil Voss
Or you can do it from within mysql
223 10 Neil Voss
<pre>
224 36 Amber Herold
update user set password=password('your_own_root_password') where user="root";
225 1 Amber Herold
Query OK, 2 rows affected (0.01 sec)
226
Rows matched: 2  Changed: 2  Warnings: 0
227
228 43 Amber Herold
# run the flush privileges command to avoid problems
229 36 Amber Herold
flush privileges;
230
^D or exit;
231 3 Amber Herold
</pre>
232 1 Amber Herold
233 3 Amber Herold
234 1 Amber Herold
From now on, you will need to specify the password to connect to the database as root user like this:
235
236 30 Neil Voss
<pre>
237 36 Amber Herold
mysql -u root -p mysql
238 1 Amber Herold
</pre>
239
240 42 Amber Herold
h3. 13 Check MySQL variables
241 1 Amber Herold
242 31 Neil Voss
<pre>
243 44 Amber Herold
# at the command prompt, log into the leginon database
244
245 36 Amber Herold
mysql -u usr_object -p leginondb
246 1 Amber Herold
247 44 Amber Herold
# At the mysql prompt show variables that begin with 'query'.
248
# Check that the changes you made to my.cfg are in place.
249
250 36 Amber Herold
SHOW VARIABLES LIKE 'query%';
251 1 Amber Herold
      +------------------------------+-----------+
252
      | Variable_name                | Value     |
253
      +------------------------------+-----------+
254
      | ft_query_expansion_limit     | 20        |
255
      | have_query_cache             | YES       |
256
      | long_query_time              | 10        |
257
      | query_alloc_block_size       | 8192      |
258 44 Amber Herold
      | query_cache_limit            | 104857600 | ---This should correspond to your change
259 1 Amber Herold
      | query_cache_min_res_unit     | 4096      |
260 44 Amber Herold
      | query_cache_size             | 104857600 | ---This should correspond to your change
261
      | query_cache_type             | ON        | ---This should correspond to your change
262 1 Amber Herold
      | query_cache_wlock_invalidate | OFF       |
263
      | query_prealloc_size          | 8192      |
264
      +------------------------------+-----------+
265
      10 rows in set (0.00 sec)
266 36 Amber Herold
267 1 Amber Herold
exit;
268
</pre>
269 42 Amber Herold
270 61 Amber Herold
 If you do not see your changes, try restarting mysql. 
271
 On centOS: 
272 60 Amber Herold
<pre>
273
sudo /etc/init.d/mysqld restart
274
</pre>
275
276 1 Amber Herold
h3. 14 Make sure MySQL is running
277 3 Amber Herold
278 36 Amber Herold
<pre>
279 45 Amber Herold
mysqlshow -u root
280 1 Amber Herold
      +--------------+
281 30 Neil Voss
      | Databases    |
282
      +--------------+
283
      | mysql        |
284
      | leginondb    |
285 1 Amber Herold
      | projectdb    |
286
      +--------------+
287 30 Neil Voss
</pre>
288 36 Amber Herold
289 1 Amber Herold
h3. Run the following command from the command line:
290 30 Neil Voss
291 46 Amber Herold
292 1 Amber Herold
<pre>
293
php -r "mysql_connect('localhost', 'usr_object', 'PASSWORD', 'leginondb'); echo mysql_stat();"; echo ""
294 30 Neil Voss
</pre>
295 1 Amber Herold
296
Expected output:
297
298
<pre>
299
Uptime: 1452562 Threads: 1 Questions: 618 Slow queries: 0 Opens: 117 Flush tables: 1 Open tables: 106 Queries per second avg: 0.000
300 47 Amber Herold
</pre>
301
302 48 Amber Herold
If there are any error messages, mysql may be configured incorrectly.
303
304 47 Amber Herold
*Note:* If you do not have php and php-mysql packages installed you need to install them to run the above command. The yum installation is:
305
<pre>
306
sudo yum -y install php php-mysql
307 36 Amber Herold
</pre>