summaryrefslogtreecommitdiff
path: root/Docs/To-be-included-in-the-manual
diff options
context:
space:
mode:
authorbk@work.mysql.com <>2000-07-31 21:29:14 +0200
committerbk@work.mysql.com <>2000-07-31 21:29:14 +0200
commitf4c589ff6c653d1d2a09c26e46ead3c8a15655d8 (patch)
treed253a359142dfc1ed247d5d4365d86972ea31109 /Docs/To-be-included-in-the-manual
parent7eec25e393727b16bb916b50d82b0aa3084e065c (diff)
downloadmariadb-git-f4c589ff6c653d1d2a09c26e46ead3c8a15655d8.tar.gz
Import changeset
Diffstat (limited to 'Docs/To-be-included-in-the-manual')
-rw-r--r--Docs/To-be-included-in-the-manual/MySQL-for-dummies271
1 files changed, 271 insertions, 0 deletions
diff --git a/Docs/To-be-included-in-the-manual/MySQL-for-dummies b/Docs/To-be-included-in-the-manual/MySQL-for-dummies
new file mode 100644
index 00000000000..7b669af18dc
--- /dev/null
+++ b/Docs/To-be-included-in-the-manual/MySQL-for-dummies
@@ -0,0 +1,271 @@
+===============================================================================
+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