mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
fcb61f5917
Portability fixes Added new client function: mysql_get_server_version() New server help code (From Victor Vagin) Fixed wrong usage of binary() Disabled RTREE usage for now. BitKeeper/etc/ignore: added scripts/fill_help_tables.sql client/mysql.cc: Some fixes when using 'help' cmd-line-utils/libedit/compat.h: Portability fix cmd-line-utils/libedit/fgetln.c: Portability fix include/mysql.h: Added new client function: mysql_get_server_version() libmysql/libmysql.c: Added new client function: mysql_get_server_version() libmysqld/libmysqld.c: Fixed prototype mysql-test/install_test_db.sh: Added creation of help tables mysql-test/r/connect.result: Added help tables mysql-test/r/myisam.result: Test of RTREE index mysql-test/r/type_ranges.result: updated results mysql-test/t/myisam.test: Test of RTREE index mysql-test/t/type_ranges.test: Updated test mysys/charset.c: Indentation change mysys/my_symlink.c: Removed compiler warning scripts/fill_help_tables.sh: Update for new help tables sql/field.cc: Indentation changes sql/filesort.cc: Optimized character set usage sql/item_cmpfunc.cc: Fix wrong usage of binary() sql/item_cmpfunc.h: Fix wrong usage of binary() sql/item_func.cc: Fix wrong usage of binary() sql/item_func.h: Fix wrong usage of binary() sql/item_strfunc.cc: Fix wrong usage of binary() sql/item_sum.cc: Fix wrong usage of binary() sql/item_sum.h: Fix wrong usage of binary() sql/key.cc: Indentation change sql/lex.h: HELP -> HELP_SYM sql/mysql_priv.h: Make get_field() more general sql/password.c: Indentation change + variable initialisation moved sql/sql_acl.cc: Make get_field() more general sql/sql_base.cc: Added comments + assertion for double call to mysql_lock_tables sql/sql_cache.cc: Indentation changes sql/sql_class.h: Added need_strxnfrm to SORT_FIELD to be able to optimise character set handling in filesort sql/sql_derived.cc: Renamed variables sql/sql_help.cc: New help functions (from Victor Vagin) sql/sql_lex.cc: Removed variables that doesn't have to be initialized for each query sql/sql_lex.h: Removed not used variable (olap) sql/sql_parse.cc: Fixed (not fatal) access of unitialized memory Indentation / code cleanup sql/sql_prepare.cc: Indentaion cleanup sql/sql_table.cc: Disabled RTREE until 5.0 sql/sql_udf.cc: Make get_field() more general sql/sql_yacc.yy: Removed access to uninitialized memory Always set offset_limit and select_limit when using LIMIT (removed warnings) Allow usage of 'help week' sql/table.cc: Make get_field() more general More comments sql/table.h: Fixded type of TABLE_LIST->derived sql/time.cc: Stricter date / datetime handling (to be able to handle timestamps with days and microseconds) strings/ctype-bin.c: Added cha
279 lines
9.8 KiB
Bash
279 lines
9.8 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 1997-2002 MySQL AB
|
|
# 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.
|
|
|
|
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
|
|
|
|
vardir=var
|
|
logdir=$vardir/log
|
|
if [ x$1 = x"-slave" ]
|
|
then
|
|
shift 1
|
|
data=var/slave-data
|
|
ldata=$fix_bin/var/slave-data
|
|
else
|
|
data=var/master-data
|
|
ldata=$fix_bin/var/master-data
|
|
fi
|
|
|
|
mdata=$data/mysql
|
|
EXTRA_ARG=""
|
|
|
|
if test ! -x $execdir/mysqld
|
|
then
|
|
echo "mysqld is missing - looked in $execdir"
|
|
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
|
|
hostname="$hostname%" # Fix if not fully qualified hostname
|
|
|
|
|
|
#create the directories
|
|
[ -d $vardir ] || mkdir $vardir
|
|
[ -d $logdir ] || mkdir $logdir
|
|
|
|
# Create database directories mysql & test
|
|
if [ -d $data ] ; then rm -rf $data ; fi
|
|
mkdir $data $data/mysql $data/test
|
|
|
|
#for error messages
|
|
if [ x$BINARY_DIST = x1 ] ; then
|
|
basedir=..
|
|
else
|
|
basedir=.
|
|
EXTRA_ARG="--language=../sql/share/english/"
|
|
fi
|
|
|
|
# Initialize variables
|
|
c_d="" i_d=""
|
|
c_h="" i_h=""
|
|
c_u="" i_u=""
|
|
c_f="" i_f=""
|
|
c_t="" c_c=""
|
|
c_hl="" c_hl=""
|
|
c_hc="" c_hc=""
|
|
c_clr="" c_clr=""
|
|
|
|
# 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,"
|
|
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,"
|
|
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';"
|
|
|
|
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');"
|
|
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,"
|
|
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,"
|
|
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 ("
|
|
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(45) binary DEFAULT '' NOT NULL,"
|
|
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,"
|
|
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,"
|
|
c_u="$c_u PRIMARY KEY Host (Host,User)"
|
|
c_u="$c_u )"
|
|
c_u="$c_u comment='Users and global privileges';"
|
|
|
|
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','');"
|
|
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
|
|
|
|
if test ! -f $mdata/help_topic.frm
|
|
then
|
|
c_hl="$c_hl CREATE TABLE help_topic ("
|
|
c_hl="$c_hl help_topic_id int unsigned not null auto_increment,"
|
|
c_hl="$c_hl name varchar(64) not null,"
|
|
c_hl="$c_hl description text not null,"
|
|
c_hl="$c_hl example text not null,"
|
|
c_hl="$c_hl url varchar(128) not null,"
|
|
c_hl="$c_hl primary key (help_topic_id),"
|
|
c_hl="$c_hl unique index (name)"
|
|
c_hl="$c_hl )"
|
|
c_hl="$c_hl comment='help topics';"
|
|
fi
|
|
|
|
if test ! -f $mdata/help_category.frm
|
|
then
|
|
c_clr="$c_clr CREATE TABLE help_category ("
|
|
c_clr="$c_clr help_category_id smallint unsigned not null auto_increment,"
|
|
c_clr="$c_clr name varchar(64) not null,"
|
|
c_clr="$c_clr url varchar(128) not null,"
|
|
c_clr="$c_clr primary key (help_category_id),"
|
|
c_clr="$c_clr unique index (name)"
|
|
c_clr="$c_clr )"
|
|
c_clr="$c_clr comment='help topics-categories relation';"
|
|
fi
|
|
|
|
if test ! -f $mdata/help_relation.frm
|
|
then
|
|
c_hc="$c_hc CREATE TABLE help_relation ("
|
|
c_hc="$c_hc help_topic_id int unsigned not null references help_topic,"
|
|
c_hc="$c_hc help_category_id smallint unsigned not null references help_category,"
|
|
c_hc="$c_hc primary key (help_category_id, help_topic_id),"
|
|
c_hc="$c_hc )"
|
|
c_hc="$c_hc comment='categories of help topics';"
|
|
fi
|
|
|
|
mysqld_boot=" $execdir/mysqld --no-defaults --bootstrap --skip-grant-tables \
|
|
--basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $EXTRA_ARG"
|
|
echo "running $mysqld_boot"
|
|
|
|
if $mysqld_boot << END_OF_DATA
|
|
use mysql;
|
|
$c_d
|
|
$i_d
|
|
|
|
$c_h
|
|
$i_h
|
|
|
|
$c_u
|
|
$i_u
|
|
|
|
$c_f
|
|
$i_f
|
|
|
|
$c_t
|
|
$c_c
|
|
|
|
$c_hl
|
|
$c_hc
|
|
$c_clr
|
|
END_OF_DATA
|
|
then
|
|
exit 0
|
|
else
|
|
echo "Error executing mysqld --bootstrap"
|
|
exit 1
|
|
fi
|