Red Hat / Fedora Core RPM Packages

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 17

Red Hat / Fedora Core RPM Packages:

 mysql-VERSION.i386.rpm (Required)
 mysql-server-VERSION.i386.rpm (Required)
 mysqlclient9-VERSION.i386.rpm (Shared object libraries)
 mysql-devel-VERSION.i386.rpm (C include files and libraries for
software developers)
 php-mysql-VERSION.i386.rpm (For accessing MySQL database from
php)

Install: rpm -ivh mysql-VERSION.i386.rpm mysql-server-VERSION.i386.rpm


mysqlclient9-VERSION.i386.rpm 
Check if installed: rpm -q mysql mysql-server mysqlclient9 
The examples on this page used mySQL 3.23.58 which is used in Red Hat 7, 8, 9 and
Fedora Core 1, 2, 3. 
Also see YoLinux.com systems administration - using RPM to set GPG
signatures and install RPM packages.

Installing MySQL.com RPM packages: If instaling newer versions of MySQL


from RPM packages obtained from MySQL.com, you must first import and
register their public GPG key:

1. Download public key


named [email protected] from http://www.keyserver.net/ with one of two
methods:
o wget --output-document=pubkey_mysql.asc
http://keyserver.veridis.com:11371/export?id=-8326718950139043339 
(Saves key 0x5072E1F5 as file pubkey_mysql.asc)
o gpg --keyserver keyserver.veridis.com --recv-key 5072e1f5 
gpg --export -a 5072e1f5 > pubkey_mysql.asc
2. Import key: rpm --import pubkey_mysql.asc

[Potential Pitfall]: Your system should have a host name other than the
default "localhost". Give your systems a host name if you get the
following installation error:
ERROR: 1062 Duplicate entry 'localhost-root' for key 1
ERROR: 1062 Duplicate entry 'localhost-' for key 1

Use the command hostname to give your system a hostname and also


set in the configuration file /etc/sysconfig/network

Ubuntu / Debian package installation:


 apt-get install mysql-client
 apt-get install mysql-server

Start the database:

Start the database: /etc/rc.d/init.d/mysqld start 


(The script will run mysql_install_db to create a default database
in /var/lib/mysql/mysql/ if the mysql init script has never been run
before. The install script will not be run again as long as the default
database directory exists.) 
The database executes as user mysqld and group mysqld.

Notes:

 One may manually initialize the database with the


command: /usr/bin/mysql_install_db 
Creates system tables in /var/lib/mysql/mysql/ 
Only execute the first time MySQL is installed.
 Databases located in: /var/lib/mysql/
 Default config file installed by RPM: /etc/my.cnf 
(Ubuntu: /etc/mysql/my.cnf)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Post installation:

1. Admin user id: root 


Default password: blank

The first task is to assign a password:


[prompt]$ mysqladmin -u root password 'new-password'

Note: the following SQL commands will also work:


mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('new-password') WHERE user='root';
mysql> FLUSH PRIVILEGES;

2. Create a database: (Creates directory /var/lib/mysql/bedrock)

[prompt]$ mysqladmin -h localhost -u root -ppassword create bedrock

3. (or use SQL command: CREATE DATABASE bedrock;) 


Show all mysql databases: mysqlshow -u root -ppassword
4. Add tables, data, etc: 
Connect to database and issue the following SQL commands:

[prompt]$ mysql -h localhost -u root -ppassword


...
mysql> show databases; - List all databases in MySQL.
+----------+
| Database |
+----------+
| bedrock |
| mysql |
| test |
+----------+
mysql> use bedrock; - Define database to connect to. Refers
to directory path: /var/lib/mysql/bedrock
mysql> create table employee (Name char(20),Dept char(20),jobTitle char(20));
mysql> DESCRIBE employee; - View the table just created. Same as "show
columns from employee;"
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| Name | char(20) | YES | | NULL | |
| Dept | char(20) | YES | | NULL | |
| jobTitle | char(20) | YES | | NULL | |
+----------+----------+------+-----+---------+-------+
3 rows in set (0.03 sec)

mysql> show tables;


+-------------------+
| Tables_in_bedrock |
+-------------------+
| employee |
+-------------------+

mysql> INSERT INTO employee VALUES ('Fred Flinstone','Quarry Worker','Rock


Digger');
mysql> INSERT INTO employee VALUES ('Wilma Flinstone','Finance','Analyst');
mysql> INSERT into employee values ('Barney Rubble','Sales','Neighbor');
mysql> INSERT INTO employee VALUES ('Betty Rubble','IT','Neighbor');

5. Note: Data type used was CHAR. Other data types include:


o CHAR(M) : Fixed length string. Always stores M characters whether
it is holding 2 or 20 characters. Where M can range 1 to 255
characters.
o VARCHAR(M) : Variable length. Stores only the string. If M is defined
to be 200 but the string is 20 characters long, only 20 characters
are stored. Slower than CHAR.
o INT : Ranging from -2147483648 to 2147483647 or unsigned 0 to
4294967295
o FLOAT(M,N) : FLOAT(4,2) - Four digits total of which 2 are after the
decimal. i.e. 12.34 Values are rounded to fit format if they are too
large.
o DATE, TEXT, BLOB, SET, ENUM
6. Add a user. Use the MySQL SQL console to enter SQL commands. The
command mysql with the correct login/password will connect you to the
database. The admin tables are stored in the database "mysql".

[prompt]$ mysql -h localhost -u root -ppassword


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.23.41

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> USE mysql;


mysql> SHOW TABLES;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
mysql> INSERT INTO user (Host, User, Password, Select_priv) VALUES ('',
'Dude1', password('supersecret'), 'Y');
mysql> FLUSH PRIVILEGES; - Required each time one makes a change to the
GRANT table
mysql> GRANT ALL PRIVILEGES ON bedrock.* TO Dude1;
mysql> FLUSH PRIVILEGES; - Required each time one makes a change to the
GRANT table
mysql> quit
7. Note:
o There is NO space between the -p and the password! You can
omit the password and you will be prompted for it.
o The SQL flush command is equivalent to issuing the command:

[prompt]$ mysqladmin reload

8. Test the database:

mysql> SELECT * from employee;


+-----------------+---------------+-------------+
| Name | Dept | jobTitle |
+-----------------+---------------+-------------+
| Fred Flinstone | Quarry Worker | Rock Digger |
| Wilma Flinstone | Finance | Analyst |
| Barney Rubble | Sales | Neighbor |
| Betty Rubble | IT | Neighbor |
+-----------------+---------------+-------------+
1 row in set (0.00 sec)

mysql> SELECT name FROM employee WHERE dept='Sales';


+---------------+
| name |
+---------------+
| Barney Rubble |
+---------------+
1 row in set (0.00 sec)

9. Quit from the SQL shell:

[prompt]$ quit

10. Shutting down the database:

[prompt]$ mysqladmin -u root -ppassword shutdown - PREFERRED


OR
[prompt]$ /etc/rc.d/init.d/mysqld stop
OR
[prompt]$ service mysqld stop
Documentation in /usr/share/doc/mysql-3.23.41/ (local file)

Security:
Security and database access is controlled by the GRANT tables.
Access to connect to the database and access to process the
transaction (table and column access, etc.) are both required. Privileges
are searched in the following order:

1. user table
2. db and host table
3. tables_priv
4. columns_priv

Use the user table to grant connection privileges to database by a user


(host, user name and password). Grant database and table access for
transaction access. i.e. grant "SELECT", "UPDATE", "CREATE",
"DELETE", "ALTER" etc. permission for database, table, field (columns)
or database server access.

Access can be granted by network permissions: GRANT ALL PRIVILEGES on


bedrock.* to david@'192.168.10.0/255.255.255.0'; 
This grants access from nodes 192.168.10.0 - 192.168.10.255. Or the
network definitions can reference resolvable names: '%.domain.com'. The
host definition of '%' or '' (null) refers to any host. (..according to the
documentation. My experience is that in the mysql.user table use only
'%' for "Host" to refer to any host.)

mysql> GRANT ALL PRIVILEGES on bedrock.* to david@'%';


mysql> FLUSH PRIVILEGES;

or (more promiscuous)
mysql> GRANT ALL PRIVILEGES on *.* to david@'%' identified by 'david';
mysql> FLUSH PRIVILEGES;

Show privileges: SHOW GRANTS FOR Dude2@'%';

Network security: Use firewall rules (ipchains or iptables) to block


internet access to port 3306. (default port used by MySQL)
Note: I have found that when adding access from "anywhere" ('%'), the
MySQL database table 'user' requires two entries, 'localhost' and '%'.
Also, it is typically safer to allow more privileges to those with 'localhost'
access than to users from '%' ("anywhere").

Passwords and connecting to the databse:

 Connect: [prompt]$ mysql -h host_name -u user_name -ppassword


 Using default blank password: [prompt]$ mysql -h localhost -u root -p 
If a password is required, you will be prompted. Note, blank passwords
are a security hole which has already lead to one mySQL internet worm.
Change any default blank passwords.
 Delete null/blank users: DELETE FROM user WHERE User = '';
 Beware of open access permissions from hosts '%': SELECT * FROM db
WHERE Host = '%';
 Change a password:

[prompt]$ mysqladmin -u root -p password new-password


You will be prompted to enter the old root password to complete this
command. 
or:

[prompt]$ mysqladmin -u root -pold-password password new-password


or:

mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('supersecret');


mysql> FLUSH PRIVILEGES;

 As an added security precaution it is wise to delete any user id not


used. i.e. any defaults generated for demonstration purposes.
 Note that the default port used by MySQL is 3306. This can be
protected with firewall rules. See the YoLinux Pintables tutorial.

Debian/Ubuntu upgrades: Note that the Debian/Ubuntu distribution will have


an additional file /etc/mysql/debian.conf. This file holds a password for the
user "debian-sys-maint" which is used by the install tool dpkg to perform
database upgrades. This can also be used in emergencies if you forget the
root password. It is also a security hole if the file is available to others.

[Potential Pitfall]: It is very easy to make mistakes which get entered into
important tables. If you enter the command twice you may have one incorrect
and one correct entry. Look at the table data after a mistake to see what
happened in case it needs to be fixed. 
Example:

mysql> USE mysql;


mysql> SELECT User,Password,Host from user;
+-------+------------------+------------+
| User | Password | Host |
+-------+------------------+------------+
| root | 99a1544eb571ad63 | localhost |
| | | localhost |
| Dude1 | 81a10dba5f6f2144 | |
| Dude1 | | |
| Dude2 | 92b10dba6f7f3155 | % |
+-------+------------------+------------+
5 rows in set (0.00 sec)
mysql> DELETE FROM user WHERE User='' AND Host='localhost';
mysql> DELETE FROM user WHERE User='Dude1' AND Password='';
mysql> FLUSH PRIVILEGES;
mysql> QUIT

User entries may also be found in the table mysql.db. 


mysql> DELETE FROM db WHERE User='Dude3' AND Host='localhost';

[Potential Pitfall]: Any changes (UPDATE) to the user table will require a "FLUSH
PRIVILEGES" before the changes will be effective.

mysql> UPDATE user SET Host='%' WHERE User='Dude2';


mysql> FLUSH PRIVILEGES;

This will allow a connection with mysql client from any host: 


[prompt]$ mysql -u Dude2 -ppassword -h node.your-domain.com

MySQL root password recovery:

1. As Linux system root user stop the database process: /etc/init.d/mysql


stop 
(or: service mysql stop)
2. Start MySQL in safe mode and skip the use of the "grant
tables": /usr/bin/mysqld_safe --user=mysql
--socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid
--datadir=/var/lib/mysql --skip-grant-tables --skip-networking &
3. Reset the MySQL root password: mysqladmin -u root flush-privileges
password newpassword
4. Stop MySQL running in safe mode: kill `cat
/var/run/mysqld/mysqld.pid`
5. Start MySQL: /etc/init.d/mysql start
6. The new MySQL root password can now be used: mysql -u root -p 
Respond withthe password: newpassword

Disabling networking:

If your configuration is a web server interacting with a mySQL database running on the
same "localhost" then one may turn off network access to tighten security. Edit shell
script:

 /usr/bin/safe_mysqld (FedoraCore 3)
 /usr/bin/mysqld_safe (Red Hat Enterprise Linux 4)

..
...
if test -z "$args"
then
$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION \
--datadir=$DATADIR $USER_OPTION --pid-file=$pid_file \
--skip-networking --skip-locking >> $err_log 2>&1
else
eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults
--basedir=$MY_BASEDIR_VERSION \
--datadir=$DATADIR $USER_OPTION --pid-file=$pid_file \
--skip-networking --skip-locking $args >> $err_log
2>&1"
fi
...
..

Add the flag "--skip-networking" marked in bold.


Mysql 5.0: Networking is disabled by default on the default Ubuntu installation. To
enable remote database access, comment out (or remove) the following line with a "#"
in the file: /etc/mysql/my.cnf
...
...

bind-address = 127.0.0.1

...
...
Restart the database after making changes.

MySQL Admin Commands:

 Statistics: [prompt]$ mysqladmin version
 List database environment: [prompt]$ mysqladmin variables
 Show if database is running: [prompt]$ mysqladmin ping
 Show databases available: 

[prompt]$ mysqlshow

+-----------+
| Databases |
+-----------+
| bedrock |
| mysql |
| test |
+-----------+

 OR

mysql> SHOW DATABASES;

 Delete database: mysql> drop database bedrock;


 Show list of active threads in server: 

[prompt]$ mysqladmin -h localhost -u root -p processlist

+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 15 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+

 Delete a database: [prompt]$ mysqladmin drop database-name


 Execute SQL from Linux command line interface: 
[prompt]$ mysql -h localhost -u root -p -e "select host,db,user from db"
mysql
 Execute SQL command file from Linux command line interface:

[prompt]$ mysql -h localhost -u root -p database-name < text-file-with-sql-


statements.sql
 Loadtest (benchmark) the system:

[prompt]$ cd sql-bench
[prompt]$ run-all-tests
or
[prompt]$ mysql -vvf test < ./tests/auto_increment.tst

Sample SQL:

SQL requests are either administrative or data-related. The following are


sample SQL segments and are not necessarily pertinent to the previous
example:

mysql> CREATE DATABASE bedrock;


mysql> USE bedrock;
mysql> SHOW tables;
mysql> SHOW DATABASES;
mysql> LOAD DATA LOCAL INFILE "data.txt" INTO TABLE bedrock;
mysql> SELECT DISTINCT dept FROM bedrock;
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species
VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
mysql> SELECT * FROM pet WHERE species = "snake" OR species = "bird";
mysql> SELECT * FROM pet WHERE species = "dog" AND sex = "f";
mysql> SELECT * FROM pet WHERE birth >= "1998-1-1";
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
mysql> SELECT * FROM pet WHERE name LIKE "b%";
mysql> SELECT * FROM pet WHERE name REGEXP "^b";
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
mysql> SELECT MAX(article) AS article FROM shop;
mysql> DROP TABLE tmp;
mysql> CREATE TABLE retired_employee (
Name char(20) DEFAULT '' NOT NULL,
Dept char(10) DEFAULT '' NOT NULL,
JobTitle char(20),
UNIQUE name_dept (Name,Dept)
);
mysql> CREATE UNIQUE index name_dept on employee (name,dept); - avoids
duplicate keys
mysql> INSERT INTO employee VALUES ("Jane Smith","Sales","Customer Rep");
mysql> INSERT INTO employee VALUES ('Jane Smith','Sales','Account Manager');
mysql> INSERT INTO employee VALUES ('Jane Smith','Engineerin','Manager');
mysql> UPDATE employee SET dept='HR' WHERE name='Jane Smith';

Use "auto_increment" integer column:


mysql> ALTER TABLE employee ADD EmpId INT NOT NULL AUTO_INCREMENT PRIMARY
KEY;

mysql> SHOW INDEX FROM employee;


mysql> ALTER TABLE employee DROP INDEX name_dept; - get rid of
mysql> SELECT VERSION();
mysql> SELECT NOW();
mysql> SELECT USER();
mysql> SELECT * FROM employee WHERE name LIKE "%Sm%";
mysql> SELECT * FROM employee WHERE name REGEXP "^Ja";
mysql>

See section 3 of MySQL manual for more examples.

Loading Data:

Command: LOAD DATA LOCAL INFILE 'file.dat' INTO TABLE employer;

Input tab delimited file: file.dat

Fred Flinstone Quarry Worker Rock Digger


Wilma Flinstone Finance Analyst
Barney Rubble Sales Neighbor
Betty Rubble IT Neighbor

Dump/Backup/Transfer Database:

The mysqldump command will read the mySQL database and generate a SQL


command text file. This allows data to be migrated to other versions of mySQL
(i.e. upgrade from typical Red Hat (RH7.x to FC3) mySQL release 3.23.58 to
a more advanced mySQL 4.1 or 5.0) or to other SQL databases. SQL
command file generated can create tables, insert data, ....

Option Description
-A Dump all the databases.
--all-
databases
-B Dump the specified databases.
--databases
-h Specify host to connect to.
--host=
-p Specify password. If you do not specify a password, then you will
--password= be queried.
-u Specify user. Defaults to current user logged in.
--user=
Same as: --add-drop-table --add-locks --all --extended-insert
--opt
--quick --lock-tables
--add-drop- Add a "drop table" SQL statement before each "create" SQL
table statement.
--add-locks Add "lock" SQL statements around "insert" SQL statements.
-a Include all mySQL specific SQL "create" options.
--all
-e Allows utilization of the new, much faster INSERT syntax.
--extended- Database you are migrating to must support this notation.
insert
-q Don’t buffer query, dump directly to stdout.
--quick
-l Lock all tables for read.
--lock-tables
-? Display command line options.
--help

Examples:

 Dump database to a file:


o Dump specified database: 
mysqldump --opt database > db-dump-file.sql
o Dump specified table in database: 
mysqldump --opt database table-name > db-dump-file.sql
o Dump multiple databases: 
mysqldump --opt --databases database1 database2 database3 > db-
dump-file.sql
o Dump everything: 
mysqldump --opt --all-databases > total-db-dump-file.sql 
mysqldump -u user-id -h host-name --opt --all-databases > total-
db-dump-file.sql

[Potential Pitfall]: If you experience the following error:


mysqldump: Got error: 1016: Can't open file: 'Database-Name' (errno:
145) when using LOCK TABLES

Fix with the following command: mysqlcheck -r -u root -p Database-Name

 Import dumped file: 


mysql database < db-dump-file.sql
 Export from one database and import to another:
o Transfer specifed database from one database to another: 
mysqldump --opt database | mysql --host=host-name -C database

Man Page:

 mysqldump

Upgrading to 4.1:
 Upgrading mySQL to 4.1 from 3.23
 Use the command: mysql_fix_privilege_tables --password=root-password 
This allows you to use the new GRANT command.

Restore MySql Database:

Restore using dump generated by mysqldump above:

 mysql -h host-name -u user-id -psupersecretpassword < total-db-dump-
file.sql
 mysql database-name -h host-name -u user-id -psupersecretpassword < db-
dump-file.sql

System Notes:

[Potential Pitfall]: Ubuntu mysql 5.0 database migration - When migrating the
mysql database by copying files
from /var/lib/mysql/... and/etc/mysql/... from one system running Ubuntu
6.11 to 8.04, I got nebulous error message in /var/log/syslog. The root cause
of the problem wasapparmor. If turing off apparmor (/etc/init.d/apparmor stop)
allows your database to start and function properly, then go fix your apparmor
security rules in /etc/apparmor.d/usr.sbin.mysqld. Also note that you must use
the newer script /etc/mysql/debian-start from release 8.04 after
copying/etc/mysql/....

Note: Debian and Ubuntu distributions manage mysql package upgrades


using a mysql user debian-sys-maint which has its information located
in/etc/mysql/debian.cnf. If you ever forget your mysql root password, you can
always get back into the mysql database using the user debian-sys-maint and
its password held in /etc/mysql/debian.cnf.

Building MySql from source: (on Linux)

Prerequisites:

 C compiler: 2.95.2 or later. (Check with the command: rpm -q gcc)

Compile and install: (as root)


 Downloaded source from http://dev.mysql.com/downloads/mysql/4.1.html
 Expand tar file: tar xzf mysql-4.1.16.tar.gz
 cd mysql-4.1.16
 ./configure --prefix=/opt/mysql --sysconfdir=/opt/etc
--localstatedir=/opt/var/mysql --with-unix-socket-
path=/opt/tmp/mysql.sock 
(Use the command ./configure --help to see all options.) 
This should create an installation which will not clobber an existing RPM
mySQL installation.
 make
 make install
 Create mysql config file: cp support-files/my-medium.cnf /opt/var/my.cnf
 Create user/group mysql
o Test if user/group mysql already exists: groups mysql
o Create group: groupadd mysql
o Create user: useradd -g mysql -M -r -d /opt/lib/mysql -s
/sbin/nologin -c "MySQL Server" mysql
 chown -R mysql:mysql /opt/var/mysql

Configure:

 Install default database: /opt/mysql/bin/mysql_install_db --user=mysql 


Since this command is run as root, specify the --user option to operate
command as user mysql. 
Creates help database with SQL
script: /opt/mysql/share/mysql/fill_help_tables.sql
 Start mySQL database: /opt/mysql/bin/mysqld_safe --user=mysql &
 /opt/mysql/bin/mysqladmin -u root password 'new-password'
 /opt/mysql/bin/mysqladmin -u root -h yoserver2 password 'new-password'
 See tutorial above for use and administration.
 Check defaults: (Defaults from config file: /opt/var/my.cnf)
o /opt/mysql/bin/my_print_defaults --config-file=my client mysql

--password=supersecret
--port=3306
--socket=/opt/tmp/mysql.sock
--no-auto-rehash

o /opt/mysql/bin/my_print_defaults --config-file=my client mysql


mysql_install_db
--datadir=/var/lib/mysql
--socket=/var/lib/mysql/mysql.sock
--password=supersecret
--port=3306
--socket=/opt/tmp/mysql.sock
--port=3306
--socket=/opt/tmp/mysql.sock
--skip-locking
--key_buffer=16M
--max_allowed_packet=1M
--table_cache=64
--sort_buffer_size=512K
--net_buffer_length=8K
--read_buffer_size=256K
--read_rnd_buffer_size=512K
--myisam_sort_buffer_size=8M
--log-bin
--server-id=1

Commands/Man pages:

 isamchk - Check and repair of ISAM tables.


 isamlog - Write info about whats in a nisam log file.
 msql2mysql
 my_print_defaults
 myisamchk
 myisamlog
 myisampack
 mysql - text-based client for mysqld, a SQL-based relational database
daemon
 mysql_config
 mysql_convert_table_format
 mysql_find_rows
 mysql_fix_privilege_tables
 mysql_install_db
 mysql_setpermission
 mysql_zap - a perl script used to kill processes
 mysqlaccess - Create new users to mysql.
 mysqlbinlog
 mysqlbug
 mysqlcheck
 mysqld_multi - Used for managing several mysqld processes running in
different UNIX sockets and TCP/IP ports.
 mysqldump - text-based client for dumping or backing up mysql databases
, tables and or data.
 mysqldumpslow
 mysqlhotcopy
 mysqlimport
 mysqlshow - Shows the structure of a mysql database (databases,tables
and columns)
 mysqltest
 pack_isam
 perror - used to display a description for a system error code, or an
MyISAM/ISAM table handler error code.
 replace - A utility program to replace changes strings in place in files or on
the standard input.
 resolve_stack_dump
 resolveip

Server:

 mysqladmin - A utility for performing administrative operations


 safe_mysqld - The recommended way to start a mysqld daemon on Unix.

Admin GUI Tools:

 mySQL Workbench [dev]
 Webyog
 phpMyAdmin - Web based

If one would like to generate a GUI interface to the database, I would


recommenda web form to a Java servlet back-end or use a JAVA GUI
program and JDBC. See the YoLinux tutorial on accessing MySQL with JDBC
in a Tomcat servlet example.

Links:
 MySQL.com:
o MySQL reference manual
o MySQL developers manual
 GeekGirls.com: Database basics

You might also like