Database Server Installation Shared » History » Version 62
Anchi Cheng, 01/24/2011 12:49 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 | 62 | Anchi Cheng | GRANT DELETE ON leginondb.ViewerImageStatus TO usr_object@'localhost'; |
162 | GRANT DELETE ON projectdb.processingdb TO usr_object@'localhost'; |
||
163 | 1 | Amber Herold | </pre> |
164 | |||
165 | 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: |
166 | <pre> |
||
167 | GRANT DELETE ON projectdb.gridboxes TO usr_object@'localhost'; |
||
168 | GRANT DELETE ON projectdb.grids TO usr_object@'localhost'; |
||
169 | GRANT DELETE ON projectdb.gridlocations TO usr_object@'localhost'; |
||
170 | </pre> |
||
171 | 1 | Amber Herold | |
172 | 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. |
173 | |||
174 | 36 | Amber Herold | At the mysql prompt execute the following commands: |
175 | 24 | Neil Voss | <pre> |
176 | 36 | Amber Herold | CREATE USER usr_object@'localhost'; |
177 | GRANT ALL PRIVILEGES ON leginondb.* TO usr_object@'localhost'; |
||
178 | 1 | Amber Herold | GRANT ALL PRIVILEGES ON projectdb.* TO usr_object@'localhost'; |
179 | </pre> |
||
180 | 24 | Neil Voss | |
181 | 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. |
182 | 26 | Neil Voss | |
183 | 1 | Amber Herold | <pre> |
184 | 36 | Amber Herold | CREATE USER usr_object@'%.mydomain.edu' IDENTIFIED BY 'YOUR PASSWORD'; |
185 | GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON leginondb.* to usr_object@'%.mydomain.edu'; |
||
186 | 1 | Amber Herold | GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON projectdb.* to usr_object@'%.mydomain.edu'; |
187 | 62 | Anchi Cheng | GRANT DELETE ON leginondb.ViewerImageStatus TO usr_object@'%.mydomain.edu'; |
188 | 1 | Amber Herold | </pre> |
189 | 62 | Anchi Cheng | |
190 | 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: |
||
191 | <pre> |
||
192 | GRANT DELETE ON projectdb.gridboxes TO usr_object@'%.mydomain.edu'; |
||
193 | GRANT DELETE ON projectdb.grids TO usr_object@'%.mydomain.edu'; |
||
194 | GRANT DELETE ON projectdb.gridlocations TO usr_object@'%.mydomain.edu'; |
||
195 | </pre> |
||
196 | |||
197 | 3 | Amber Herold | |
198 | 42 | Amber Herold | h3. 11 Give create and access privileges for the processing databases which begin with "ap". |
199 | 10 | Neil Voss | |
200 | 24 | Neil Voss | <pre> |
201 | 27 | Neil Voss | # if your web host is local |
202 | 36 | Amber Herold | GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON `ap%`.* to usr_object@localhost; |
203 | 27 | Neil Voss | # for all other hosts if you are accessing the databases from another computer |
204 | 36 | Amber Herold | GRANT ALTER, CREATE, INSERT, SELECT, UPDATE ON `ap%`.* to usr_object@'%.mydomain.edu'; |
205 | 1 | Amber Herold | </pre> |
206 | |||
207 | 42 | Amber Herold | h3. 12 Change Root password |
208 | 1 | Amber Herold | |
209 | 28 | Neil Voss | To set the root password use the command: |
210 | 1 | Amber Herold | |
211 | 28 | Neil Voss | <pre> |
212 | sudo mysqladmin -u root password NEWPASSWORD |
||
213 | </pre> |
||
214 | 1 | Amber Herold | |
215 | 28 | Neil Voss | Or you can do it from within mysql |
216 | 10 | Neil Voss | <pre> |
217 | 36 | Amber Herold | update user set password=password('your_own_root_password') where user="root"; |
218 | 1 | Amber Herold | Query OK, 2 rows affected (0.01 sec) |
219 | Rows matched: 2 Changed: 2 Warnings: 0 |
||
220 | |||
221 | 43 | Amber Herold | # run the flush privileges command to avoid problems |
222 | 36 | Amber Herold | flush privileges; |
223 | ^D or exit; |
||
224 | 3 | Amber Herold | </pre> |
225 | 1 | Amber Herold | |
226 | 3 | Amber Herold | |
227 | 1 | Amber Herold | From now on, you will need to specify the password to connect to the database as root user like this: |
228 | |||
229 | 30 | Neil Voss | <pre> |
230 | 36 | Amber Herold | mysql -u root -p mysql |
231 | 1 | Amber Herold | </pre> |
232 | |||
233 | 42 | Amber Herold | h3. 13 Check MySQL variables |
234 | 1 | Amber Herold | |
235 | 31 | Neil Voss | <pre> |
236 | 44 | Amber Herold | # at the command prompt, log into the leginon database |
237 | |||
238 | 36 | Amber Herold | mysql -u usr_object -p leginondb |
239 | 1 | Amber Herold | |
240 | 44 | Amber Herold | # At the mysql prompt show variables that begin with 'query'. |
241 | # Check that the changes you made to my.cfg are in place. |
||
242 | |||
243 | 36 | Amber Herold | SHOW VARIABLES LIKE 'query%'; |
244 | 1 | Amber Herold | +------------------------------+-----------+ |
245 | | Variable_name | Value | |
||
246 | +------------------------------+-----------+ |
||
247 | | ft_query_expansion_limit | 20 | |
||
248 | | have_query_cache | YES | |
||
249 | | long_query_time | 10 | |
||
250 | | query_alloc_block_size | 8192 | |
||
251 | 44 | Amber Herold | | query_cache_limit | 104857600 | ---This should correspond to your change |
252 | 1 | Amber Herold | | query_cache_min_res_unit | 4096 | |
253 | 44 | Amber Herold | | query_cache_size | 104857600 | ---This should correspond to your change |
254 | | query_cache_type | ON | ---This should correspond to your change |
||
255 | 1 | Amber Herold | | query_cache_wlock_invalidate | OFF | |
256 | | query_prealloc_size | 8192 | |
||
257 | +------------------------------+-----------+ |
||
258 | 10 rows in set (0.00 sec) |
||
259 | 36 | Amber Herold | |
260 | 1 | Amber Herold | exit; |
261 | </pre> |
||
262 | 42 | Amber Herold | |
263 | 61 | Amber Herold | If you do not see your changes, try restarting mysql. |
264 | On centOS: |
||
265 | 60 | Amber Herold | <pre> |
266 | sudo /etc/init.d/mysqld restart |
||
267 | </pre> |
||
268 | |||
269 | 1 | Amber Herold | h3. 14 Make sure MySQL is running |
270 | 3 | Amber Herold | |
271 | 36 | Amber Herold | <pre> |
272 | 45 | Amber Herold | mysqlshow -u root |
273 | 1 | Amber Herold | +--------------+ |
274 | 30 | Neil Voss | | Databases | |
275 | +--------------+ |
||
276 | | mysql | |
||
277 | | leginondb | |
||
278 | 1 | Amber Herold | | projectdb | |
279 | +--------------+ |
||
280 | 30 | Neil Voss | </pre> |
281 | 36 | Amber Herold | |
282 | 1 | Amber Herold | h3. Run the following command from the command line: |
283 | 30 | Neil Voss | |
284 | 46 | Amber Herold | |
285 | 1 | Amber Herold | <pre> |
286 | php -r "mysql_connect('localhost', 'usr_object', 'PASSWORD', 'leginondb'); echo mysql_stat();"; echo "" |
||
287 | 30 | Neil Voss | </pre> |
288 | 1 | Amber Herold | |
289 | Expected output: |
||
290 | |||
291 | <pre> |
||
292 | Uptime: 1452562 Threads: 1 Questions: 618 Slow queries: 0 Opens: 117 Flush tables: 1 Open tables: 106 Queries per second avg: 0.000 |
||
293 | 47 | Amber Herold | </pre> |
294 | |||
295 | 48 | Amber Herold | If there are any error messages, mysql may be configured incorrectly. |
296 | |||
297 | 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: |
298 | <pre> |
||
299 | sudo yum -y install php php-mysql |
||
300 | 36 | Amber Herold | </pre> |