mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
271 lines
11 KiB
Text
271 lines
11 KiB
Text
===============================================================================
|
|
installing/mysql/binary Fri Jul 17 13:03:03 1998 has
|
|
===============================================================================
|
|
|
|
MySQL for dummies - Part 1
|
|
How to get the binary distribution running on a UNIX system
|
|
|
|
MySQL is a trademark of TcX, Sweden.
|
|
|
|
===============================================================================
|
|
|
|
Introduction:
|
|
|
|
This is a simple cookbook for the helpless newbie taking his very first steps
|
|
with MySQL, when he needs a few hints about the options and access rights
|
|
installing the system and starting the basic modules, before he has "aha"ed
|
|
on how simple and clean the basic structure of MySQL is. It will not help
|
|
you with the intricacies and subtle possibilities of SQL as implemented in
|
|
MySQL.
|
|
|
|
The information in this document is all contained in the MySQL manual in a
|
|
more or less obvious form, but for the newbie that document is a bit over-
|
|
whelming in size, and it contains some new concepts that take some getting
|
|
used to. Sorry if it is pitched too low for some readers. It is only
|
|
intended to get the binary distribution up and running.
|
|
|
|
I successfully got MySQL going on both a Sun SparcStation 1 running SunOS 4.1.2
|
|
and 2 Linux systems running SuSE release 5.0, one with kernel version 2.0.30,
|
|
one with 2.0.33 by doing exactly what is given here. If it doesn't work
|
|
for you, I suggest the problem is with your system and not with the
|
|
MySQL binary distribution.
|
|
|
|
-- Howard Schultens hs@neuro-physiol.med.uni-goettingen.de
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
Nomenclature:
|
|
|
|
In the following, 'MySQL' refers to the entire database system distributed
|
|
and licensed by TcX. 'mysql' means a specific program in this system.
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
MySQL user administration and access rights ("privileges"):
|
|
|
|
It is obvious that MySQL needs its own user management because it is a system
|
|
that is implemented on a number of architectures -- you should be able to use
|
|
it in an identical way on different operating systems. The MySQL user names
|
|
and passwords have basically nothing at all to do with user names and
|
|
passwords on whatever operating system you install it on. You will,
|
|
unfortunately, have to install your users again on MySQL. But this system has
|
|
some big advantages: it is a secure system that allows you to finely
|
|
differentiate access rights based on WHO is using a database from WHERE. It
|
|
does this by the use of its own database containing 3 tables "user" for the
|
|
user names, "db" for the databases, and "host" for the machines that access
|
|
databases. "user" and "db" are the most important for the newbie.
|
|
|
|
Section 6 of the manual describes all this in detail.
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
Doing it:
|
|
|
|
In the following, "foo>" denotes the prompt from your system in user mode,
|
|
"foo#" as root/superuser.
|
|
|
|
|
|
1) Get the appropriate binary distribution from a mirror site or directly
|
|
from TcX at URL http://www.tcx.se. The file name has the form
|
|
mysql-VERSION-SYSTEM.tgz
|
|
|
|
VERSION = Version number, e.g. 3.21.33
|
|
SYSTEM = OS and architecture, e.g. sunos4.1.4-sparc
|
|
|
|
i.e., you would download a file mysql-3.21.33-sunos4.1.4-sparc.tgz.
|
|
|
|
This example is for SunOS, but it works exactly analogously on Linux.
|
|
|
|
2) cd to /usr/local and unpack this with, e.g. the command
|
|
|
|
foo#gzip -c -d mysql-VERSION-SYSTEM.tgz|tar xvf -
|
|
|
|
3) The files are stored in a directory /usr/local/mysql-VERSION-SYSTEM
|
|
Make a symbolic link to this directory:
|
|
|
|
foo#ln -s mysql-VERSION-SYSTEM mysql
|
|
|
|
At this point, you might want to create a special user for all your
|
|
MySQL stuff. I use "mysql". Then you could do
|
|
|
|
foo#chown -R mysql mysql-VERSION-SYSTEM
|
|
|
|
4) FIRST, take care of all the PERL stuff:
|
|
|
|
o) You need PERL 5.004 or later already installed on your system. Take
|
|
care of this first if necessary.
|
|
|
|
a) cd to /usr/local/mysql/perl/DBI and do
|
|
foo#perl Makefile.PL
|
|
foo#make
|
|
foo#make test
|
|
foo#make install (if "make test" is successful)
|
|
|
|
b) cd to /usr/local/mysql/perl/Mysql/modules and do
|
|
foo#perl Makefile.PL
|
|
foo#make
|
|
foo#make test
|
|
foo#make install (if "make test" is successful)
|
|
|
|
c) As an option, you can install Data::ShowTable, but this is not absolutely
|
|
necessary for mysql. Get the PERL module Data-ShowTable-VER.tar.gz
|
|
(VER = version, eg. 3.3) from a CPAN mirror: I got mine at
|
|
|
|
ftp://ftp.gwdg.de/pub/languages/perl/CPAN/modules/by-category/06_Data_Type_Utilities/Data/Data-ShowTable-3.3.tar.gz
|
|
|
|
(You should be able to replace "ftp.gwdg.de" by the name of another
|
|
FTP mirror)
|
|
|
|
Put this into /usr/local/mysql/perl and unpack it.
|
|
You get a directory 'Data-ShowTable-VER'. cd into there and
|
|
(as root/superuser)
|
|
foo#perl Makefile.PL
|
|
foo#make
|
|
foo#make test
|
|
foo#make install (if "make test" is successful)
|
|
|
|
5) cd to /usr/local/mysql and do
|
|
foo#scripts/mysql_install_db
|
|
|
|
you should be in /usr/local/mysql when you start the script.
|
|
|
|
==>*NOTE* you might want to edit this script before you run it the first
|
|
time. See method 9b) below.
|
|
|
|
If this is successful, one or more copies of the mysql daemon, mysqld,
|
|
will be running. On SunOS 4.1.x, you get one. On Linux, 3 are running.
|
|
|
|
-------------------------------------------------------------------------------
|
|
In the rest of this, I will always suppose you are starting in the directory
|
|
/usr/local/mysql, even if it seems mildly inconvenient
|
|
-------------------------------------------------------------------------------
|
|
|
|
6) You can now select the database 'test' and mess around with it using
|
|
the client program bin/mysql: start it with
|
|
|
|
foo>bin/mysql -u root test
|
|
|
|
This says, "start up the MySQL command-line client with the user name
|
|
'root' and use the database named 'test', which is a subdirectory in
|
|
'/usr/local/mysql/data". (n.b. this is NOT the root user of your UNIX
|
|
system, it is a MySQL user with the same name. You will notice that you
|
|
don't need a password for this user to use mysql).
|
|
|
|
Actually, the way the system is set up by bin/mysql_install_db, you
|
|
don't even need a user name to access the database 'test'. You can start
|
|
the client simply with
|
|
|
|
foo>bin/mysql test
|
|
|
|
'mysql' should start up with a greeting and a line telling you what your
|
|
connection id and server version is. At this point, the database 'test'
|
|
is empty, no tables or anything are defined.
|
|
|
|
When you issue SQL commands, DON'T FORGET THE FINAL SEMICOLON, or mysql acts
|
|
dumb:
|
|
|
|
mysql>select * from user
|
|
->
|
|
->
|
|
|
|
and you wonder what's going on. 'mysql' reminds you of this on startup.
|
|
|
|
7) When you want to close down the server, do
|
|
foo>bin/mysqladmin shutdown
|
|
|
|
8) I recommend editing the script bin/safe_mysqld for the binary release
|
|
so that it always starts up with the correct directories. I replaced
|
|
the entire header up to but not including
|
|
|
|
pidfile=$DATADIR/`/bin/hostname`.pid
|
|
log=$DATADIR/`/bin/hostname`.log
|
|
err=$DATADIR/`/bin/hostname`.err
|
|
|
|
with
|
|
|
|
MY_BASEDIR_VERSION=/usr/local/mysql
|
|
DATADIR=$MY_BASEDIR_VERSION/data
|
|
ledir=$MY_BASEDIR_VERSION/bin
|
|
cd $MY_BASEDIR_VERSION
|
|
|
|
This lets you start the mysql daemon from wherever you like.
|
|
|
|
9) Now let's say you want to put some of your own databases and users into
|
|
the system. The simplest, most powerful, and dangerous way to do this is
|
|
to start up the mysql daemon again with:
|
|
|
|
foo>bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data -Sg
|
|
|
|
This skips loading the grant tables. The system is open to every kind of
|
|
mistake now, so be careful. Any user can muck up the grant tables, ie.
|
|
the lists of users, hosts, and databases themselves, so only use this
|
|
mode to do these first, very basic things.
|
|
|
|
Start the client again now, with
|
|
foo>bin/mysql mysql
|
|
|
|
This tells the client to use the database 'mysql', which is the directory
|
|
that contains the lists (ie. the tables) of all the users, hosts, and
|
|
databases in the system, so be careful!!!!!!!!!!!!
|
|
|
|
All of what follows is taken essentially from section 6 of the manual.
|
|
|
|
a) For the start, just define a couple of users for the MySQL system:
|
|
i) an administrator, such as 'mysql', with its own password, that
|
|
can do everything with the system:
|
|
|
|
mysql> insert into user values('localhost','mysql',password('xyzzy'),
|
|
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
|
|
|
* For some reason, on my Linux system with a German keyboard, I have *
|
|
* to use the acute accent instead of the apostrophe, otherwise I get *
|
|
* parse errors. *
|
|
|
|
This defines the user name 'mysql' with password 'xyzzy' that can
|
|
do everything. To look at what you just did, type in
|
|
|
|
mysql> select * from user;
|
|
|
|
mysql types out a table with all the known users and their privileges.
|
|
|
|
ii) a privileged user for playing around:
|
|
|
|
mysql> insert into user values('localhost','john',password('blah0x1'),
|
|
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
|
|
|
iii) create your own database for a todo list, phone numbers, whatever:
|
|
|
|
mysql> create database johns_DB;
|
|
mysql> insert into db values('localhost','johns_DB','john','Y','Y','Y','Y','Y','Y');
|
|
|
|
The first line creates the databse "johns_DB", but that doesn't
|
|
make it visible to mysql. The second line does that.
|
|
|
|
iv) When you are done installing users and databases, quit mysql and
|
|
issue the command
|
|
|
|
foo>bin/mysqladmin reload
|
|
|
|
b) Another method to do this was suggested by Sinisa Milivojevic, and that
|
|
is to edit the script /usr/local/mysql/scripts/mysql_install_db to
|
|
define the databases and install the more important users when you
|
|
start the system the very first time. This would have the advantage
|
|
that you can save the script and re-install the system with it if you
|
|
have to, automatically defining the important structures. It requires
|
|
a little more knowledge of the MySQL system to do this.
|
|
|
|
You might want to use this method anyway since it saves editing
|
|
mysql_install_db to have it install a superuser with a name other
|
|
than "root". The places to change are easy to find. You can, of
|
|
course, use the first method above and remove the user named 'root'
|
|
when you are done.
|
|
|
|
|
|
===============================================================================
|
|
|
|
If anyone is interested enough in this document to make suggestions on how
|
|
to improve it, I would be glad to get emails on it. I hope it helps
|
|
someone get going with MySQL a little easier.
|
|
|
|
--Howard
|
|
hs@neuro-physiol.med.uni-goettingen.de
|