pavement

MySQL, Simple Installation

From FreeBSDwiki
(Difference between revisions)
Jump to: navigation, search
(Overview)
 
(14 intermediate revisions by 5 users not shown)
Line 9: Line 9:
 
'''Install MySQL from ports'''
 
'''Install MySQL from ports'''
  
First, we need to install the port. Make sure you're logged in as [[root]], and as always, update your ports tree with [[CVSUP]] before doing any major software installations.
+
First, we need to install the port. Make sure you're logged in as [[root]], and as always, update your ports tree with [[csup]] before doing any major software installations.  You also need to have working DNS resolution for your machine's hostname - check the output of the [[hostname]] command, and make sure you can [[ssh]] into it (and that it is your box!).  If you don't have working DNS resolution, you will need to either fix it or temporarily hack your way around the problem by issuing a '''hostname localhost''' command to set the machine's name to localhost.
  
 
  oyabun# cd /usr/ports/databases/mysql40-server/
 
  oyabun# cd /usr/ports/databases/mysql40-server/
Line 18: Line 18:
 
When the installation is done, you'll see something very similar to this:
 
When the installation is done, you'll see something very similar to this:
  
<pre name="I used pre on this because this is a lot of text.">
+
<pre>
 
To start mysqld at boot time you have to copy support-files/mysql.server
 
To start mysqld at boot time you have to copy support-files/mysql.server
 
to the right place for your system
 
to the right place for your system
Line 87: Line 87:
 
MySQL is now installed, so let's get it ready for use.
 
MySQL is now installed, so let's get it ready for use.
  
First, we have to start the server. The following assumes you logged in as a regular account, then used [[su]] to become [[root]].
+
First, we have to [[rehash]] your shell's PATH and start the server.
  
  oyabun# exit
+
  oyabun# '''rehash'''
exit
+
  oyabun# '''/usr/local/etc/rc.d/mysql-server.sh start'''
> su
+
Password:
+
  oyabun# /usr/local/etc/rc.d/mysql-server.sh start
+
 
  mysqloyabun#
 
  mysqloyabun#
oyabun#
 
  
It may not be necessary, but I usually exit my root shell and re-login in after major software installations, so the system can find necessary scripts and programs in the path, which the new software may have updated. It costs nothing but a few seconds. Anyway: You'll notice mysql notified you that it started by changing the next shell prompt to "''mysqloyabun#'', where ''oyabun'' = the name of your server.
+
You'll notice mysql's startup script notified you that it started by saying "''mysql'' - there's no carriage return after a startup script calls out its notification like that, so instead of seeing a completely separate line, you see "mysqloyabun#" instead of "oyabun#" as the next command prompt.
  
Note: by default, your new MySQL installation does not have a root password set.  If you want to keep [[shell users]] from logging into it as root, or if you want remote SQL clients to be able to authenticate themselves as root, you'll need to [[MySQL:_set_root_password|set a root password]] now.
+
Raven's Note: by default, your new MySQL installation does not have a root password set.  If you want to keep [[shell users]] from logging into it as root, or if you want remote SQL clients to be able to authenticate themselves as root, you'll need to [[MySQL:_set_root_password|set a root password]] now.
  
 
=='''Testing the installation'''==
 
=='''Testing the installation'''==
Line 126: Line 122:
 
  Query OK, 0 rows affected (0.00 sec)
 
  Query OK, 0 rows affected (0.00 sec)
  
That's it! You now have MySQL added to your machine, and you begin using php scripts or other MySQL tools.
+
That's it! You now have MySQL added to your machine, and you begin using php scripts or other MySQL tools. You can find more articles on how to do things with MySQL at the [[MySQL|MySQL Disambiguation page]].
 
+
  
 
[[Category : Common Tasks]]
 
[[Category : Common Tasks]]

Latest revision as of 21:14, 17 December 2014

This article will walk you through a simple installation of MySQL server, for usage via localhost in a local environment. (For example, for use in conjunction with Apache and PHP in a web-database related role, with no direct foreign connections to the MySQL server. All connections will be made internally.)

See also: MySQL

[edit] Overview

For this article, I'll be installing MySQL Server and Client, version 4.0.20 (current in my ports tree.) The steps listed here will very likely work for newer versions available when you read this, but you may want to google to make sure.

Install MySQL from ports

First, we need to install the port. Make sure you're logged in as root, and as always, update your ports tree with csup before doing any major software installations. You also need to have working DNS resolution for your machine's hostname - check the output of the hostname command, and make sure you can ssh into it (and that it is your box!). If you don't have working DNS resolution, you will need to either fix it or temporarily hack your way around the problem by issuing a hostname localhost command to set the machine's name to localhost.

oyabun# cd /usr/ports/databases/mysql40-server/
oyabun# make install clean

This will download the source for MySQL Server, compile it, and also install mysql40-client, as it is a dependency. This process will very likely take a decent amount of time. Oyabun is my BSD server, and it's an AthlonXP 2000+, compiling MySQL from source usually takes about 15 - 25 minutes. (Guesstimating, I've never actually timed it.)

When the installation is done, you'll see something very similar to this:

To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h oyabun.n3s.local password 'new-password'
See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local ; /usr/local/bin/mysqld_safe &

You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests

Please report any problems with the /usr/local/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com
mysql:*:88:
You already have a group "mysql", so I will use it.
mysql:*:88:88::0:0:MySQL Daemon:/var/db/mysql:/sbin/nologin
You already have a user "mysql", so I will use it.
Changed home directory of "mysql" to "/var/db/mysql"
===>   Compressing manual pages for mysql-server-4.0.20
===>   Registering installation for mysql-server-4.0.20
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/bin/ndb_drop_table
/usr/local/bin/ndb_delete_all
/usr/local/libexec/ndbd
/usr/local/bin/ndb_restore
/usr/local/bin/ndb_cpcd
/usr/local/libexec/ndb_mgmd
/usr/local/bin/ndb_select_all
/usr/local/bin/ndb_drop_index
/usr/local/bin/ndb_desc
/usr/local/lib/mysql/libndbclient.so.0
/usr/local/bin/ndb_show_tables
/usr/local/bin/ndb_waiter
/usr/local/bin/ndb_select_count

      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/mysql-server.sh

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage:
http://www.mysql.com/
===>  Cleaning for mysql-client-4.0.20
===>  Cleaning for libtool-1.5.8
===>  Cleaning for mysql-server-4.0.20

The really important parts are those about setting a MySQL password for your root account, and the addition of a mysql group and a mysql user to your base system. You'll notice in my example that I already had a mysql user and group, but you likely won't.

You'll also notice that the install added a startup script to /usr/local/etc/rc.d/, meaning MySQL server will start with every boot now. Let's move on to configuration and finish up this installation.

[edit] Configuration

MySQL is now installed, so let's get it ready for use.

First, we have to rehash your shell's PATH and start the server.

oyabun# rehash
oyabun# /usr/local/etc/rc.d/mysql-server.sh start
mysqloyabun#

You'll notice mysql's startup script notified you that it started by saying "mysql - there's no carriage return after a startup script calls out its notification like that, so instead of seeing a completely separate line, you see "mysqloyabun#" instead of "oyabun#" as the next command prompt.

Raven's Note: by default, your new MySQL installation does not have a root password set. If you want to keep shell users from logging into it as root, or if you want remote SQL clients to be able to authenticate themselves as root, you'll need to set a root password now.

[edit] Testing the installation

We're going to get into a little bit of mysql syntax here. For more in-depth documentation, you should visit http://www.mysql.com or google the particular command you're having trouble with, using 'mysql grant syntax' as the search argument for example.

oyabun# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31 to server version: 4.0.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database testing;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on testing.* to 'user'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.02 sec)
mysql>


First, you'll notice that all commands in the mysql client have to be terminated with ;. If you forget and hit enter, you can just enter a lone ; on a new line, and it will work provided the syntax of the command is correct.

If both of those commands worked, then you just created a database named testing, and assigned full read/write priviledges to a user name 'user' with password 'password'.

To delete a database, issue the following command:

mysql> drop database testing;
Query OK, 0 rows affected (0.00 sec)

That's it! You now have MySQL added to your machine, and you begin using php scripts or other MySQL tools. You can find more articles on how to do things with MySQL at the MySQL Disambiguation page.

Personal tools