Installation

only for RuBoard - do not distribute or recompile

Installation

To prepare for installation, make sure you have plenty of room on your root partition. When you install MySQL server rpm, MySQL client rpm, MySQL shared rpm, and the MySQL development rpm, it requires over 26MB of space.

In addition to the space MySQL needs, the database files themselves require room. The default database storage directory is /var/lib/mysql. In that directory, you will find files and directories. The database files are stored in directories.

If you have a partition on which you want to store the database files, you will need to do some work after install. I will cover moving the entire MySQL database files to a new location after installation.

Installing the RPM

Copy all the MySQL rpm files into one directory. Run the rpm install command with all the MySQL rpms listed, putting a space between each one. You will get a printout similar to Listing 3.1.

Example 3.1. Initial MySQL Installation
 [root@winbook imp]# rpm -i MySQL-3.22.32-1.i386.rpm MySQL-client-3.22.32-1.i386. rpm MySQL-shared-3.22.32-1.i386.rpm MySQL-devel-3.22.32-1.i386.rpm Creating db table Creating host table Creating user table Creating func table Creating tables_priv table Creating columns_priv table PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! This is done with: /usr/bin/mysqladmin -u root password 'new-password' See the manual for more instructions. Please report any problems with the /usr/bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.c om Support MySQL by buying support/licenses at http://www.tcx.se/license.htmy. Starting mysqld daemon with databases from /var/lib/mysql [root@winbook imp]# 

Now select a password for the root user. The root user has full access to MySQL by default. The initial password for the root user is blank. Choose something you will not forget and that is difficult for other people to guess. For this book, I'll be using the password mypass. It is a terrible password and should not be used under any circumstance.

Run the command as shown. Note that MySQL does not prompt you to re-enter the password. You must get it right the first time!

 [root@winbook /root]# mysqladmin -u root password 'mypass' 

A Quick Test of the Install

Three things must be done to verify that MySQL installed correctly. First, run the rpm query ( rpm -qa ) command and make sure all the packages installed. Because I want to see all the packages installed, I have rpm dump the entire list and then grep for the packages I want. I use the search option -I, which is not case sensitive.

 [root@winbook /root]# rpm -qa  grep -i mysql 

Output

 MySQL-3.22.32-1 MySQL-client-3.22.32-1 MySQL-shared-3.22.32-1 MySQL-devel-3.22.32-1 

After this checks out, I look to see that the mysql daemons are running. I run the ps commmand with the ax command-line switch, and grep for mysql. You should get a printout similar to the following:

 [root@winbook /root]# ps ax  grep -i mysql 

Output

 529 ?        S      0:00 sh /usr/bin/safe_mysqld --user=mysql \pid-file=/var/   563 ?        SN     0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql   621 ?        SN     0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql   622 ?        SN     0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql 

Finally, I run the mysql command-line program and take a look at the mysql database. The mysql database contains information about permissions and other databases in the system.

 [root@winbook /root]# mysql mysql 

Output

 ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) [root@winbook /root]# mysql -pmypass mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.22.32 Type 'help' for help. mysql> 

The first time I attempted to use the mysql program, I got an error message because I did not enter the password. If you don't get an error message, it is because you did not set a password! The second time, I entered the password and it let me in. Note the password is entered immediately after the -p option with no spaces in between.

Now, show the table information. You must put a semicolon (;) at the end of every command. This signals to MySQL that you are finished entering the command, and to begin acting upon that command. If you press Enter before putting in a semicolon, simply enter the semicolon on the next line and then press Enter:

 mysql> show tables; 

Output

 +-----------------+  Tables in mysql  +-----------------+  columns_priv      db                func              host              tables_priv       user             +-----------------+ 6 rows in set (0.00 sec) mysql> 

NOTE

The mysql program allows commands to span multiple lines. You usually let the mysql program know that you are ready for it to interpret the command line(s) just entered by entering a semicolon as the last character in the line before pressing Enter. You can also use \G or \g as the signal to the mysql program to interpret the command line(s). These endings format the output a different way when using the mysql program.

The mysql utility also uses the readline library. This library enables the up arrow and down arrow keys to be used to recall previously entered command lines. These lines can be edited using the right and left arrow keys to move the cursor. After you press Enter, the new line is entered into the readline buffer and handed to the mysql program for interpretation.

When you use SQL statements in PHP, do not use the semicolon to signal the end of the statement. If you do, you will get an error. The semicolon is only used by the mysql utility to tell it to start processing your command.


You can show information from all the tables in the mysql database. The most interesting table in a new mysql database is the user table (see Listing 3.2). Let's look at the columns in the user table:

Example 3.2. MySQL System User Table
 mysql> show columns from user; +-----------------+---------------+------+-----+---------+-------+  Field            Type           Null  Key  Default  Extra   Host             char(60)             PRI                   User             char(16)             PRI                   Password         char(16)                                   Select_priv      enum('N','Y')             N                Insert_priv      enum('N','Y')             N                Update_priv      enum('N','Y')             N                Delete_priv      enum('N','Y')             N                Create_priv      enum('N','Y')             N                Drop_priv        enum('N','Y')             N                Reload_priv      enum('N','Y')             N                Shutdown_priv    enum('N','Y')             N                Process_priv     enum('N','Y')             N                File_priv        enum('N','Y')             N                Grant_priv       enum('N','Y')             N                References_priv  enum('N','Y')             N                Index_priv       enum('N','Y')             N                Alter_priv       enum('N','Y')             N               +-----------------+---------------+------+-----+---------+-------+ 17 rows in set (0.00 sec) mysql> 

The user table has many columns. The column names are fairly obvious. This table controls most of the ability to access this database system. For now, let's look at the first four columns for all the rows in the database:

 mysql> select host,user,password,select_priv from user; 

Output

 +-----------+------+------------------+-------------+  host       user  password          select_priv  +-----------+------+------------------+-------------+  localhost  root  6f8c114b58f2ce9e  Y             winbook    root                    Y             localhost                          N             winbook                            N            +-----------+------+------------------+-------------+ 4 rows in set (0.00 sec) mysql> 

Briefly, the root user can access the database from the localhost (on loopback address 127.0.0.1) using a password. If the root user accesses the database from the winbook host, no password is needed.

NOTE

Even though winbook and localhost are the same machine in this case, any command-line invocations of programs use the loopback adapter by default. This means that you will always require a password to access MySQL. However, if someone is able to spoof and pretend they are coming from the winbook host, MySQL does not require a password.

To fix this problem, you need to run mysql as root and enter an update command where you update the password for all occurrences of the root user:


 mysql> select Host,User,Password from user; 

Output

 +-----------+--------+------------------+  Host       User    Password          +-----------+--------+------------------+  localhost  root    6f8c114b58f2ce9e   winbook    root                       localhost                             winbook                               localhost  impmgr  5567401602cd5ddd  +-----------+--------+------------------+ 5 rows in set (0.00 sec) mysql> UPDATE user SET Password=PASSWORD('mypass') where User='root'; Query OK, 1 row affected (0.12 sec) Rows matched: 2  Changed: 1  Warnings: 0 mysql> select Host,User,Password from user where User='root'; +-----------+------+------------------+  Host       User  Password          +-----------+------+------------------+  localhost  root  6f8c114b58f2ce9e   winbook    root  6f8c114b58f2ce9e  +-----------+------+------------------+ 2 rows in set (0.01 sec) 

The root user also has select privilege to databases. Any other user has no select privilege, whether coming from the localhost or from the winbook host. If you examine the rest of the columns in the user table, you will see that root has full privileges, and other users have no privileges. This is the default security setup for MySQL.

To exit the mysql command-line utility, enter quit and press Enter. For some reason, no semicolon is needed at the end of this command.

Troubleshooting the Install

I have never had the MySQL install fail unless I was installing it on an early version of an operating system. If you attempt to install this on a stock Red Hat 5.x system then MySQL might very well not work. If you must do this, be sure to upgrade your glibc package. If this library is too far out of date, MySQL will not function.

The other possibility for an install failure is lack of disk space. You must have plenty of room in the partition that holds the /usr and /var directories. If you don't then MySQL might install, but fail to work properly. I strongly recommend that you have 100MB of free disk space in the partition that holds the /var/lib/mysql directory after you have installed MySQL. If you don't you might have a surprise failure after a short time, unless you monitor your disk usage carefully .

only for RuBoard - do not distribute or recompile


MySQL and PHP From Scratch
MySQL & PHP From Scratch
ISBN: 0789724405
EAN: 2147483647
Year: 1999
Pages: 93
Authors: Wade Maxfield

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net