# Get network config
. /etc/sysconfig/network
+MYSQL_DATA_DIR=/var/state/mysql
+MYSQL_USER=mysql
+
# Get service config
if [ -f /etc/sysconfig/mysql ] ; then
. /etc/sysconfig/mysql
if [ -z "${MYSQL_DATA_DIR}" ]; then
MYSQL_DATA_DIR=/var/state/mysql
fi
-else
- MYSQL_DATA_DIR=/var/state/mysql
fi
# Check that networking is up.
# Check if not exist init database
if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
show Creating privilege mysql tables
- started
- TMP=/tmp TMPDIR=/tmp mysql_install_db &>/tmp/initdb.mysql
- show Creating privilege mysql tables
- ok
- echo "Now You can setup database administrator password by:"
- echo "# mysqladmimn -u mysql -h <host> password <new-password>"
+ busy
+ TMP=/tmp TMPDIR=/tmp
+ hostname=`hostname` # Install this too in the user table
+
+ # Check if hostname is valid
+ resolved=`/usr/bin/resolveip $hostname 2>&1`
+ if [ $? -ne 0 ]; then
+ resolved=`/usr/bin/resolveip localhost 2>&1`
+ if [ $? -eq 0 ]; then
+ deltext
+ fail
+ echo "Sorry, the host '$hostname' could not be looked up."
+ echo "Please configure the 'hostname' command to return a correct hostname."
+ exit 1
+ fi
+ fi
+
+ # Create database directories mysql & test
+ if test ! -d $MYSQL_DATA_DIR/mysql; then
+ install -d -m700 -o mysql $MYSQL_DATA_DIR/mysql;
+ fi
+ if test ! -d $MYSQL_DATA_DIR/test; then
+ install -d -m700 -o mysql $MYSQL_DATA_DIR/test;
+ fi
+
+ #mysqld --bootstrap need whole (and only one) sql command in one line
+ create_db=""
+ create_db="$create_db CREATE TABLE db ( "
+ create_db="$create_db Host char(60) DEFAULT '' NOT NULL, "
+ create_db="$create_db Db char(32) DEFAULT '' NOT NULL,"
+ create_db="$create_db User char(16) DEFAULT '' NOT NULL, "
+ create_db="$create_db Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_db="$create_db PRIMARY KEY Host (Host,Db,User), "
+ create_db="$create_db KEY User (User)"
+ create_db="$create_db );"
+
+ create_host=""
+ create_host="$create_host CREATE TABLE host ( "
+ create_host="$create_host Host char(60) DEFAULT '' NOT NULL, "
+ create_host="$create_host Db char(32) DEFAULT '' NOT NULL, "
+ create_host="$create_host Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_host="$create_host PRIMARY KEY Host (Host,Db)"
+ create_host="$create_host );"
+
+ create_user=""
+ create_user="$create_user CREATE TABLE user ("
+ create_user="$create_user Host char(60) DEFAULT '' NOT NULL, "
+ create_user="$create_user User char(16) DEFAULT '' NOT NULL, "
+ create_user="$create_user Password char(16) DEFAULT '' NOT NULL, "
+ create_user="$create_user Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
+ create_user="$create_user Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
+ create_user="$create_user Process_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user File_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
+ create_user="$create_user PRIMARY KEY Host (Host,User)"
+ create_user="$create_user );"
+
+ create_func=""
+ create_func="$create_func CREATE TABLE func ( "
+ create_func="$create_func name char(64) DEFAULT '' NOT NULL, "
+ create_func="$create_func ret tinyint(1) DEFAULT '0' NOT NULL,"
+ create_func="$create_func dl char(128) DEFAULT '' NOT NULL, "
+ create_func="$create_func type enum ('function','aggregate') NOT NULL, "
+ create_func="$create_func PRIMARY KEY (name)"
+ create_func="$create_func ); "
+
+ create_tblpriv=""
+ create_tblpriv="$create_tblpriv CREATE TABLE tables_priv ( "
+ create_tblpriv="$create_tblpriv Host char(60) DEFAULT '' NOT NULL, "
+ create_tblpriv="$create_tblpriv Db char(60) DEFAULT '' NOT NULL, "
+ create_tblpriv="$create_tblpriv User char(16) DEFAULT '' NOT NULL,"
+ create_tblpriv="$create_tblpriv Table_name char(60) DEFAULT '' NOT NULL, "
+ create_tblpriv="$create_tblpriv Grantor char(77) DEFAULT '' NOT NULL, "
+ create_tblpriv="$create_tblpriv Timestamp timestamp(14), "
+ create_tblpriv="$create_tblpriv Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL, "
+ create_tblpriv="$create_tblpriv Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
+ create_tblpriv="$create_tblpriv PRIMARY KEY (Host,Db,User,Table_name), "
+ create_tblpriv="$create_tblpriv KEY Grantor (Grantor)"
+ create_tblpriv="$create_tblpriv );"
+
+ create_colpriv=""
+ create_colpriv="$create_colpriv CREATE TABLE columns_priv ( "
+ create_colpriv="$create_colpriv Host char(60) DEFAULT '' NOT NULL, "
+ create_colpriv="$create_colpriv Db char(60) DEFAULT '' NOT NULL, "
+ create_colpriv="$create_colpriv User char(16) DEFAULT '' NOT NULL, "
+ create_colpriv="$create_colpriv Table_name char(60) DEFAULT '' NOT NULL, "
+ create_colpriv="$create_colpriv Column_name char(60) DEFAULT '' NOT NULL, "
+ create_colpriv="$create_colpriv Timestamp timestamp(14), "
+ create_colpriv="$create_colpriv Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, "
+ create_colpriv="$create_colpriv PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
+ create_colpriv="$create_colpriv );"
+
+ if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
+ --basedir=/usr --datadir=$MYSQL_DATA_DIR --user=mysql << END_OF_DATA
+ use mysql;
+ $create_db
+ $inser_db
+ $create_host
+ $create_user
+ $insert_user
+ $create_func
+ $create_tblpriv
+ $create_colpriv
+
+ INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');
+ INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');
+ INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
+ INSERT INTO user VALUES ('$hostname','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
+ REPLACE INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
+ REPLACE INTO user VALUES ('$hostname','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
+ INSERT INTO user VALUES ('localhost','','','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
+ INSERT INTO user VALUES ('$hostname','','','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
+
+END_OF_DATA
+ then
+ deltext
+ ok
+ echo " PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !"
+ echo " This is done with:"
+ echo " /usr/bin/mysqladmin -u root password 'new-password'"
+ echo " See the manual for more instructions."
+ echo
+ else
+ deltext
+ fail
+ echo " Installation of grant tables failed!"
+ echo
+ echo " Examine the logs in $MYSQL_DATA_DIR for more information."
+ echo " You can also try to start the mysqld demon with:"
+ echo " /usr/sbin/mysqld --skip-grant &"
+ echo " You can use the command line tool"
+ echo " /usr/bin/mysql to connect to the mysql"
+ echo " database and look at the grant tables:"
+ echo
+ echo "shell> /usr/bin/mysql -u root mysql"
+ echo "mysql> show tables"
+ echo
+ echo "Try 'mysqld --help' if you have problems with paths. Using --log"
+ echo "gives you a log in $MYSQL_DATA_DIR that may be helpful."
+ echo
+ echo "The latest information about MySQL is available on the web at"
+ echo "http://www.mysql.com"
+ echo "Please consult the MySQL manual section: 'Problems running mysql_install_db',"
+ echo "and the manual section that describes problems on your OS."
+ echo "Another information source is the MySQL email archive."
+ echo "Please check all of the above before mailing us!"
+ echo "And if you do mail us, you MUST use the /usr/bin/mysqlbug script!"
+ exit 1
+ fi
else
echo "Semms that database is initialized now. Remove by hand $MYSQL_DATA_DIR/mysql"
echo "before initialize database.".