summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorgreg@mysql.com <>2003-09-04 12:56:02 -0400
committergreg@mysql.com <>2003-09-04 12:56:02 -0400
commitb450f654900f95bc22fe67d8b23f500e9e66e8cd (patch)
tree78e947431952b6f8936db6929dc2eba5eedfec5e /scripts
parentb64d6a0310f1788e09c405222fc86d1303196054 (diff)
downloadmariadb-git-b450f654900f95bc22fe67d8b23f500e9e66e8cd.tar.gz
Provide mysql_fix_privilege_tables.sql for Windows users to update grant tables (BUG #948)
Fix make_win_src_distribution
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/make_win_src_distribution.sh49
-rw-r--r--scripts/mysql_fix_privilege_tables.sql159
2 files changed, 195 insertions, 13 deletions
diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh
index 9b310722886..b0d63f1d6d8 100755
--- a/scripts/make_win_src_distribution.sh
+++ b/scripts/make_win_src_distribution.sh
@@ -13,8 +13,8 @@ DEBUG=0
SILENT=0
SUFFIX=""
DIRNAME=""
-OUTTAR=0
-OUTZIP=0
+OUTTAR="0"
+OUTZIP="0"
#
# This script must run from MySQL top directory
@@ -114,16 +114,37 @@ done
# Convert argument file from unix to DOS text
#
-unix_to_dos()
-{
- for arg do
- print_debug "Replacing LF -> CRLF from '$arg'"
+if [ `which recode` ]
+then
- sed -e 's/$/\r/' $arg > $arg.tmp
- rm -f $arg
- mv $arg.tmp $arg
- done
-}
+ print_debug "Using 'recode' to convert from unix to dos text"
+
+ unix_to_dos()
+ {
+ for arg do
+ print_debug "Replacing LF -> CRLF from '$arg'"
+
+ chmod u+w $arg
+ recode lat1..ibmpc $arg
+ done
+ }
+
+else
+
+ print_debug "Using 'sed' to convert from unix to dos text"
+
+ unix_to_dos()
+ {
+ for arg do
+ print_debug "Replacing LF -> CRLF from '$arg'"
+
+ sed -e 's/$/\r/' $arg > $arg.tmp
+ rm -f $arg
+ mv $arg.tmp $arg
+ done
+ }
+
+fi
#
@@ -363,8 +384,10 @@ which_1 ()
# Create the result zip/tar file
#
-if [ [ "$OUTTAR" = "0" ] && [ "$OUTZIP" = "0" ] ]; then
- OUTZIP=1
+if [ "$OUTTAR" = "0" ]; then
+ if [ "$OUTZIP" = "0" ]; then
+ OUTZIP=1
+ fi
fi
set_tarzip_options()
diff --git a/scripts/mysql_fix_privilege_tables.sql b/scripts/mysql_fix_privilege_tables.sql
new file mode 100644
index 00000000000..aca9a9c21d4
--- /dev/null
+++ b/scripts/mysql_fix_privilege_tables.sql
@@ -0,0 +1,159 @@
+-- This scripts updates the mysql.user, mysql.db, mysql.host and the
+-- mysql.func tables to MySQL 3.22.14 and above.
+
+-- This is needed if you want to use the new GRANT functions,
+-- CREATE AGGREGATE FUNCTION or want to use the more secure passwords in 3.23
+
+-- If you get 'Access denied' errors, you should run this script again
+-- and give the MySQL root user password as an argument!
+
+
+-- Converting all privilege tables to MyISAM format
+ALTER TABLE user type=MyISAM;
+ALTER TABLE db type=MyISAM;
+ALTER TABLE host type=MyISAM;
+ALTER TABLE func type=MyISAM;
+ALTER TABLE columns_priv type=MyISAM;
+ALTER TABLE tables_priv type=MyISAM;
+
+
+-- Fix old password format, add File_priv and func table
+
+-- If your tables are already up to date or partially up to date you will
+-- get some warnings about 'Duplicated column name'. You can safely ignore these!
+
+alter table user change password password char(16) NOT NULL;
+alter table user add File_priv enum('N','Y') NOT NULL;
+CREATE TABLE if not exists func (
+ name char(64) DEFAULT '' NOT NULL,
+ ret tinyint(1) DEFAULT '0' NOT NULL,
+ dl char(128) DEFAULT '' NOT NULL,
+ type enum ('function','aggregate') NOT NULL,
+ PRIMARY KEY (name)
+);
+
+-- Add the new grant colums
+
+-- Creating Grant Alter and Index privileges if they don't exists
+-- You can ignore any Duplicate column errors
+alter table user add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL;
+alter table host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL;
+alter table db add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL;
+
+-- If the new grant columns didn't exists, copy File -> Grant
+-- and Create -> Alter, Index, References
+
+-- Setting default privileges for the new grant, index and alter privileges
+ UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv;
+ UPDATE db SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv;
+ UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv;
+
+--
+-- The second alter changes ssl_type to new 4.0.2 format
+
+-- Adding columns needed by GRANT .. REQUIRE (openssl)"
+-- You can ignore any Duplicate column errors"
+ALTER TABLE user
+ADD ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL,
+ADD ssl_cipher BLOB NOT NULL,
+ADD x509_issuer BLOB NOT NULL,
+ADD x509_subject BLOB NOT NULL;
+ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL;
+
+--
+-- Create tables_priv and columns_priv if they don't exists
+--
+
+-- Creating the new table and column privilege tables"
+
+CREATE TABLE IF NOT EXISTS tables_priv (
+ Host char(60) DEFAULT '' NOT NULL,
+ Db char(60) DEFAULT '' NOT NULL,
+ User char(16) DEFAULT '' NOT NULL,
+ Table_name char(60) DEFAULT '' NOT NULL,
+ Grantor char(77) DEFAULT '' NOT NULL,
+ Timestamp timestamp(14),
+ Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL,
+ Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,
+ PRIMARY KEY (Host,Db,User,Table_name)
+);
+CREATE TABLE IF NOT EXISTS columns_priv (
+ Host char(60) DEFAULT '' NOT NULL,
+ Db char(60) DEFAULT '' NOT NULL,
+ User char(16) DEFAULT '' NOT NULL,
+ Table_name char(60) DEFAULT '' NOT NULL,
+ Column_name char(59) DEFAULT '' NOT NULL,
+ Timestamp timestamp(14),
+ Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,
+ PRIMARY KEY (Host,Db,User,Table_name,Column_name)
+);
+
+--
+-- Name change of Type -> Column_priv from MySQL 3.22.12
+--
+
+-- Changing name of columns_priv.Type -> columns_priv.Column_priv
+-- You can ignore any Unknown column errors from this
+
+
+ALTER TABLE columns_priv change Type Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL;
+
+
+
+--
+-- Add the new 'type' column to the func table.
+--
+
+-- Fixing the func table
+-- You can ignore any Duplicate column errors
+
+alter table func add type enum ('function','aggregate') NOT NULL;
+
+
+--
+-- Change the user,db and host tables to MySQL 4.0 format
+--
+
+-- Adding new fields used by MySQL 4.0.2 to the privilege tables
+-- You can ignore any Duplicate column errors
+
+
+alter table user
+add Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER alter_priv,
+add Super_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Show_db_priv,
+add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Super_priv,
+add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Create_tmp_table_priv,
+add Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Lock_tables_priv,
+add Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Execute_priv,
+add Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Repl_slave_priv;
+
+
+-- Convert privileges so that users have similar privileges as before
+
+-- Updating new privileges in MySQL 4.0.2 from old ones
+
+ update user set show_db_priv= select_priv, super_priv=process_priv, execute_priv=process_priv, create_tmp_table_priv='Y', Lock_tables_priv='Y', Repl_slave_priv=file_priv, Repl_client_priv=file_priv where user<>"";
+
+
+-- Add fields that can be used to limit number of questions and connections
+-- for some users.
+
+
+alter table user
+add max_questions int(11) NOT NULL AFTER x509_subject,
+add max_updates int(11) unsigned NOT NULL AFTER max_questions,
+add max_connections int(11) unsigned NOT NULL AFTER max_updates;
+
+
+--
+-- Add Create_tmp_table_priv and Lock_tables_priv to db and host
+--
+
+
+alter table db
+add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,
+add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL;
+alter table host
+add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,
+add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL;
+