Commit c0a1b2c8 authored by Joerg Bruehe's avatar Joerg Bruehe

Backport this change from MySQL 5.5 to 5.1:

  Bug #14181049: MYSQL_INSTALL_DB.PL CREATES EMPTY SYSTEM TABLES FOR MYSQL

  The script is different from what's used on unixes.
  It was not playing the table insertion script (mysql_system_tables_data.sql),
  although it was checking for the presence of this script.
  Fixed by re-enabling the lookup for this file and replaying it at bootstrap
  time. Note that on the Unixes "SELECT @@hostname" does return a fully qualified
  name, whereas on Windows it returns only a hostname.
  So by default we're filtering records in the mysql.user table until we ensure
  this is fixed.

The change was coded in 5.5 by Georgi Kodinov <Georgi.Kodinov@Oracle.com>
parent 95f6e191
...@@ -423,10 +423,11 @@ my $mysqld_install_cmd_line = quote_options($mysqld_bootstrap, ...@@ -423,10 +423,11 @@ my $mysqld_install_cmd_line = quote_options($mysqld_bootstrap,
"--bootstrap", "--bootstrap",
"--basedir=$opt->{basedir}", "--basedir=$opt->{basedir}",
"--datadir=$opt->{ldata}", "--datadir=$opt->{ldata}",
"--skip-innodb", "--log-warnings=0",
"--skip-bdb", "--loose-skip-innodb",
"--skip-ndbcluster", "--loose-skip-ndbcluster",
"--max_allowed_packet=8M", "--max_allowed_packet=8M",
"--default-storage-engine=MyISAM",
"--net_buffer_length=16K", "--net_buffer_length=16K",
@args, @args,
); );
...@@ -439,6 +440,8 @@ report_verbose_wait($opt,"Installing MySQL system tables..."); ...@@ -439,6 +440,8 @@ report_verbose_wait($opt,"Installing MySQL system tables...");
open(SQL, $create_system_tables) open(SQL, $create_system_tables)
or error($opt,"can't open $create_system_tables for reading: $!"); or error($opt,"can't open $create_system_tables for reading: $!");
open(SQL2, $fill_system_tables)
or error($opt,"can't open $fill_system_tables for reading: $!");
# FIXME > /dev/null ? # FIXME > /dev/null ?
if ( open(PIPE, "| $mysqld_install_cmd_line") ) if ( open(PIPE, "| $mysqld_install_cmd_line") )
{ {
...@@ -452,8 +455,20 @@ if ( open(PIPE, "| $mysqld_install_cmd_line") ) ...@@ -452,8 +455,20 @@ if ( open(PIPE, "| $mysqld_install_cmd_line") )
print PIPE $_; print PIPE $_;
} }
while ( <SQL2> )
{
# TODO: make it similar to the above condition when we're sure
# @@hostname returns a fqdn
# When doing a "cross bootstrap" install, no reference to the current
# host should be added to the system tables. So we filter out any
# lines which contain the current host name.
next if /\@current_hostname/;
print PIPE $_;
}
close PIPE; close PIPE;
close SQL; close SQL;
close SQL2;
report_verbose($opt,"OK"); report_verbose($opt,"OK");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment