SOURCES: mysql.init - revamped database init: - secure default, no referen...
baggins
baggins at pld-linux.org
Tue Oct 14 13:37:31 CEST 2008
Author: baggins Date: Tue Oct 14 11:37:31 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- revamped database init:
- secure default, no references to $hostname in default mysql db
- better commands for password seting
(see http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2008-October/020465.html for details)
- fill help tables (fast access to help for 500KB is a good deal)
- white space cleanup
---- Files affected:
SOURCES:
mysql.init (1.126 -> 1.127)
---- Diffs:
================================================================
Index: SOURCES/mysql.init
diff -u SOURCES/mysql.init:1.126 SOURCES/mysql.init:1.127
--- SOURCES/mysql.init:1.126 Mon Oct 13 00:50:40 2008
+++ SOURCES/mysql.init Tue Oct 14 13:37:25 2008
@@ -361,34 +361,14 @@
return
fi
- show "Creating privilege mysql tables for $MYSQL_DATA_DIR"
+ show "Installing MySQL system tables for $MYSQL_DATA_DIR"
busy
TMP=/tmp TMPDIR=/tmp
- # Install this in the user table, too
- hostname="`hostname --fqdn 2> /dev/null | tr -d '[:space:]'`"
- [ "$hostname" = "localhost" -o -z "$hostname" ] && hostname="`hostname 2> /dev/null | tr -d '[:space:]'`"
- [ -z "$hostname" ] && hostname="localhost-unknown"
-
- # Check if hostname is valid
- if [ -z "$hostname" ]; then
- deltext
- fail
- nls "Sorry, the host name is not configured."
- nls "Please configure the 'hostname' command to return a hostname."
- exit 1
- elif ! hostname -i >/dev/null 2>&1; then
- deltext
- fail
- nls "Sorry, the host '%s' could not be looked up." "$hostname"
- nls "Please configure the 'hostname' command to return a correct hostname."
- exit 1
- fi
-
mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
# Using mysql:mysql for MYSQL_CLUSTER_DIR is creating SECURITY hole, root:root is proper
chown root:root "$MYSQL_CLUSTER_DIR"
- chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
+ chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
chmod 751 "$MYSQL_CLUSTER_DIR" "$MYSQL_CLUSTER_DIR/mysqldb"
if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
@@ -411,7 +391,7 @@
CREATE DATABASE mysql;
use mysql;
$(cat /usr/share/mysql/mysql_system_tables.sql)
- $(sed -e "s,@@hostname,'$hostname',g" /usr/share/mysql/mysql_system_tables_data.sql)
+ $(sed -e "/@current_hostname/d" /usr/share/mysql/mysql_system_tables_data.sql)
EOF
ok=0
@@ -423,27 +403,44 @@
if [ "$ok" = 1 ]; then
rm -f $MYSQL_DATA_DIR/mysql-init.sql
- ok
- cat << END_OF_MSG
+ ok
+ cat << END_OF_MSG
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
-This is done (after starting database; press enter when asked for password) with:
+This is done, after starting database, in the order shown,
+with:
-mysqladmin -u mysql -S $MYSQL_SOCKET password 'password'
-mysqladmin -h $hostname -u mysql -S $MYSQL_SOCKET password 'password'
-echo "set password=password('newpassword');" | mysql -u mysql_sysadmin -S $MYSQL_SOCKET
+For 'mysql_sysadmin' (RELOAD and SHUTDOWN privileges):
+echo "update mysql.user set password=password('newpassword') where user='mysql_sysadmin'; FLUSH PRIVILEGES;" | mysql -u mysql -S $MYSQL_SOCKET
+
+For 'mysql' user (ALL privileges, DB admin):
+echo "update mysql.user set password=password('newpassword') where user='mysql'; FLUSH PRIVILEGES;" | mysql -u mysql -S $MYSQL_SOCKET
NOTE: mysql_sysadmin password should be placed to $MYSQL_CONFIG in
mysqladmin section. See the manual for more instructions.
(This user is used at logs rotation and server shutdown)
-If you want to use new help tables in MySQL 4.1.x then you'll need to import the help data:
-mysql -u mysql -p -S $MYSQL_SOCKET mysql < /usr/share/mysql/fill_help_tables.sql
+END_OF_MSG
+ show "Filling help tables..."
+ ok=0
+ ( echo "use mysql;"; cat /usr/share/mysql/fill_help_tables.sql ) | \
+ /usr/sbin/mysqld --bootstrap --skip-grant-tables \
+ --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER \
+ --slave-load-tmpdir=$MYSQL_DATA_DIR --tmpdir=$MYSQL_DATA_DIR < \
+ $MYSQL_DATA_DIR/mysql-init.sql 2>> /var/log/mysql/err && ok=1
+ if [ "$ok" = 1 ]; then
+ ok
+ else
+ cat << END_OF_MSG
+
+WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!
+The "HELP" command might not work properly.
END_OF_MSG
- else
- fail
- cat << END_OF_MSG
+ fi
+ else
+ fail
+ cat << END_OF_MSG
Installation of grant tables FAILED!
The initialization SQL script was preserved at $MYSQL_DATA_DIR/mysql-init.sql
@@ -473,8 +470,7 @@
us, you MUST use the mysqlbug script!
END_OF_MSG
-
- exit 1
+ exit 1
fi
}
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/mysql.init?r1=1.126&r2=1.127&f=u
More information about the pld-cvs-commit
mailing list