2000-07-31 21:29:14 +02:00
#!/bin/sh
2002-09-16 14:55:19 +02:00
# Copyright (C) 1997-2002 MySQL AB
2000-07-31 21:29:14 +02:00
# For a more info consult the file COPYRIGHT distributed with this file
# This scripts creates the privilege tables db, host, user, tables_priv,
# columns_priv in the mysql database, as well as the func table.
2000-12-07 15:54:59 +01:00
if [ x$1 = x"-bin" ] ; then
shift 1
execdir = ../bin
bindir = ../bin
BINARY_DIST = 1
fix_bin = mysql-test
else
execdir = ../sql
bindir = ../client
fix_bin = .
fi
2000-07-31 21:29:14 +02:00
2000-12-28 18:25:41 +01:00
vardir = var
logdir = $vardir /log
2000-11-18 07:35:40 +01:00
if [ x$1 = x"-slave" ]
2000-07-31 21:29:14 +02:00
then
2000-12-07 15:54:59 +01:00
shift 1
data = var/slave-data
ldata = $fix_bin /var/slave-data
2000-11-18 07:35:40 +01:00
else
2001-04-21 16:12:59 +02:00
data = var/master-data
ldata = $fix_bin /var/master-data
2000-07-31 21:29:14 +02:00
fi
2000-12-07 15:54:59 +01:00
mdata = $data /mysql
2001-06-25 10:35:22 +02:00
EXTRA_ARG = ""
2000-12-07 15:54:59 +01:00
2000-07-31 21:29:14 +02:00
if test ! -x $execdir /mysqld
then
2000-12-07 15:54:59 +01:00
echo " mysqld is missing - looked in $execdir "
2000-07-31 21:29:14 +02:00
exit 1
fi
# On IRIX hostname is in /usr/bsd so add this to the path
PATH = $PATH :/usr/bsd
hostname = ` hostname` # Install this too in the user table
2001-01-04 01:56:38 +01:00
hostname = " $hostname % " # Fix if not fully qualified hostname
2000-07-31 21:29:14 +02:00
2000-11-18 07:35:40 +01:00
2000-12-28 18:25:41 +01:00
#create the directories
[ -d $vardir ] || mkdir $vardir
[ -d $logdir ] || mkdir $logdir
2000-07-31 21:29:14 +02:00
# Create database directories mysql & test
2000-12-07 15:54:59 +01:00
if [ -d $data ] ; then rm -rf $data ; fi
2000-12-28 18:25:41 +01:00
mkdir $data $data /mysql $data /test
2000-07-31 21:29:14 +02:00
2000-10-10 00:41:21 +02:00
#for error messages
2000-12-07 15:54:59 +01:00
if [ x$BINARY_DIST = x1 ] ; then
basedir = ..
else
basedir = .
2001-06-25 10:35:22 +02:00
EXTRA_ARG = "--language=../sql/share/english/"
2000-12-07 15:54:59 +01:00
fi
2000-10-10 00:41:21 +02:00
2000-07-31 21:29:14 +02:00
# Initialize variables
c_d = "" i_d = ""
c_h = "" i_h = ""
c_u = "" i_u = ""
c_f = "" i_f = ""
c_t = "" c_c = ""
# Check for old tables
if test ! -f $mdata /db.frm
then
# mysqld --bootstrap wants one command/line
c_d = " $c_d CREATE TABLE db ( "
c_d = " $c_d Host char(60) DEFAULT '' NOT NULL, "
c_d = " $c_d Db char(64) DEFAULT '' NOT NULL, "
c_d = " $c_d User char(16) DEFAULT '' NOT NULL, "
c_d = " $c_d Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
2002-09-16 14:55:19 +02:00
c_d = " $c_d Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_d = " $c_d Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
2000-07-31 21:29:14 +02:00
c_d = " $c_d PRIMARY KEY Host (Host,Db,User), "
c_d = " $c_d KEY User (User) "
c_d = " $c_d ) "
c_d = " $c_d comment='Database privileges'; "
2002-09-16 14:55:19 +02:00
i_d = " INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
INSERT INTO db VALUES ( '%' ,'test\_%' ,'' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'N' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ) ; "
2000-07-31 21:29:14 +02:00
fi
if test ! -f $mdata /host.frm
then
c_h = " $c_h CREATE TABLE host ( "
c_h = " $c_h Host char(60) DEFAULT '' NOT NULL, "
c_h = " $c_h Db char(64) DEFAULT '' NOT NULL, "
c_h = " $c_h Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
2002-09-16 14:55:19 +02:00
c_h = " $c_h Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_h = " $c_h Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
2000-07-31 21:29:14 +02:00
c_h = " $c_h PRIMARY KEY Host (Host,Db) "
c_h = " $c_h ) "
c_h = " $c_h comment='Host privileges; Merged with database privileges'; "
fi
if test ! -f $mdata /user.frm
then
c_u = " $c_u CREATE TABLE user ( "
2002-06-12 14:04:18 +02:00
c_u = " $c_u Host char(60) binary DEFAULT '' NOT NULL, "
c_u = " $c_u User char(16) binary DEFAULT '' NOT NULL, "
c_u = " $c_u Password char(16) binary DEFAULT '' NOT NULL, "
2000-07-31 21:29:14 +02:00
c_u = " $c_u Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Process_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u File_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
2002-06-12 14:04:18 +02:00
c_u = " $c_u Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Super_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
c_u = " $c_u ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL, "
c_u = " $c_u ssl_cipher BLOB NOT NULL, "
c_u = " $c_u x509_issuer BLOB NOT NULL, "
c_u = " $c_u x509_subject BLOB NOT NULL, "
c_u = " $c_u max_questions int(11) unsigned DEFAULT 0 NOT NULL, "
c_u = " $c_u max_updates int(11) unsigned DEFAULT 0 NOT NULL, "
c_u = " $c_u max_connections int(11) unsigned DEFAULT 0 NOT NULL, "
2000-07-31 21:29:14 +02:00
c_u = " $c_u PRIMARY KEY Host (Host,User) "
c_u = " $c_u ) "
c_u = " $c_u comment='Users and global privileges'; "
2002-06-12 14:04:18 +02:00
i_u = " INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
INSERT INTO user VALUES ( '$hostname' ,'root' ,'' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'' ,'' ,'' ,'' ,0,0,0) ;
REPLACE INTO user VALUES ( '127.0.0.1' ,'root' ,'' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'' ,'' ,'' ,'' ,0,0,0) ;
INSERT INTO user ( host,user) values ( 'localhost' ,'' ) ;
INSERT INTO user ( host,user) values ( '$hostname' ,'' ) ; "
2000-07-31 21:29:14 +02:00
fi
if test ! -f $mdata /func.frm
then
c_f = " $c_f CREATE TABLE func ( "
c_f = " $c_f name char(64) DEFAULT '' NOT NULL, "
c_f = " $c_f ret tinyint(1) DEFAULT '0' NOT NULL, "
c_f = " $c_f dl char(128) DEFAULT '' NOT NULL, "
c_f = " $c_f type enum ('function','aggregate') NOT NULL, "
c_f = " $c_f PRIMARY KEY (name) "
c_f = " $c_f ) "
c_f = " $c_f comment='User defined functions'; "
fi
if test ! -f $mdata /tables_priv.frm
then
c_t = " $c_t CREATE TABLE tables_priv ( "
c_t = " $c_t Host char(60) DEFAULT '' NOT NULL, "
c_t = " $c_t Db char(64) DEFAULT '' NOT NULL, "
c_t = " $c_t User char(16) DEFAULT '' NOT NULL, "
c_t = " $c_t Table_name char(60) DEFAULT '' NOT NULL, "
c_t = " $c_t Grantor char(77) DEFAULT '' NOT NULL, "
c_t = " $c_t Timestamp timestamp(14), "
c_t = " $c_t Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL, "
c_t = " $c_t Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, "
c_t = " $c_t PRIMARY KEY (Host,Db,User,Table_name), "
c_t = " $c_t KEY Grantor (Grantor) "
c_t = " $c_t ) "
c_t = " $c_t comment='Table privileges'; "
fi
if test ! -f $mdata /columns_priv.frm
then
c_c = " $c_c CREATE TABLE columns_priv ( "
c_c = " $c_c Host char(60) DEFAULT '' NOT NULL, "
c_c = " $c_c Db char(64) DEFAULT '' NOT NULL, "
c_c = " $c_c User char(16) DEFAULT '' NOT NULL, "
c_c = " $c_c Table_name char(64) DEFAULT '' NOT NULL, "
c_c = " $c_c Column_name char(64) DEFAULT '' NOT NULL, "
c_c = " $c_c Timestamp timestamp(14), "
c_c = " $c_c Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, "
c_c = " $c_c PRIMARY KEY (Host,Db,User,Table_name,Column_name) "
c_c = " $c_c ) "
c_c = " $c_c comment='Column privileges'; "
fi
2001-08-20 19:20:47 +02:00
mysqld_boot = " $execdir /mysqld --no-defaults --bootstrap --skip-grant-tables \
2001-10-10 01:50:28 +02:00
--basedir= $basedir --datadir= $ldata --skip-innodb --skip-bdb $EXTRA_ARG "
2001-08-20 19:20:47 +02:00
echo " running $mysqld_boot "
if $mysqld_boot << END_OF_DATA
2000-07-31 21:29:14 +02:00
use mysql;
$c_d
$i_d
$c_h
$i_h
$c_u
$i_u
$c_f
$i_f
$c_t
$c_c
END_OF_DATA
then
exit 0
else
2002-05-03 22:52:36 +02:00
echo "Error executing mysqld --bootstrap"
2000-07-31 21:29:14 +02:00
exit 1
fi