diff options
author | monty@donna.mysql.com <> | 2000-12-26 17:35:48 +0200 |
---|---|---|
committer | monty@donna.mysql.com <> | 2000-12-26 17:35:48 +0200 |
commit | 988a98c39315c53d47e28b79ef88f0a0b7ac4287 (patch) | |
tree | 7d5482b675df974ad486aff70513b273b718fe60 | |
parent | 384b371bd293c1038ff62237bf82ab39300290ca (diff) | |
parent | a12c1ffb9a738ac986e3106542b82a54a0a49a39 (diff) | |
download | mariadb-git-988a98c39315c53d47e28b79ef88f0a0b7ac4287.tar.gz |
Merge work:/my/mysql into donna.mysql.com:/home/my/bk/mysql
-rw-r--r-- | .bzrignore | 2 | ||||
-rw-r--r-- | Docs/manual.texi | 279 | ||||
-rw-r--r-- | sql/gen_lex_hash.cc | 2 | ||||
-rw-r--r-- | sql/mysql_priv.h | 2 | ||||
-rw-r--r-- | sql/mysqld.cc | 48 | ||||
-rw-r--r-- | sql/sql_show.cc | 25 | ||||
-rw-r--r-- | sql/structs.h | 4 |
7 files changed, 262 insertions, 100 deletions
diff --git a/.bzrignore b/.bzrignore index 47b47611d1d..6d77ebb79c8 100644 --- a/.bzrignore +++ b/.bzrignore @@ -181,3 +181,5 @@ mysql-test/mysql-test-run BitKeeper/tmp/gone mysqld.S mysqld.sym +.snprj/* +sql-bench/output/* diff --git a/Docs/manual.texi b/Docs/manual.texi index cd13813eba3..8d3e037728d 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -135,6 +135,7 @@ version see the relevant distribution. * MySQL internals:: @strong{MySQL} internals * Environment variables:: @strong{MySQL} environment variables * Users:: Some @strong{MySQL} users +* MySQL customer usage:: * Contrib:: Contributed programs * Credits:: Contributors to @strong{MySQL} * News:: @strong{MySQL} change history @@ -192,7 +193,7 @@ Example Licensing Situations * ISP:: ISP @strong{MySQL} services * Web server:: Running a web server using @strong{MySQL}. -@strong{MySQL} Licensing and Support Costs +MySQL Licensing and Support Costs * Payment information:: Payment information * Contact information:: Contact information @@ -222,7 +223,7 @@ Installing MySQL * OS/2:: OS/2 notes * MySQL binaries:: MySQL binaries * Post-installation:: Post-installation setup and testing -* Upgrade:: Upgrading/downgrading @strong{MySQL} +* Upgrade:: Upgrading/Downgrading MySQL Installing a MySQL Binary Distribution @@ -828,6 +829,7 @@ Credits * Developers:: * Contributors:: +* Supporters:: MySQL change history @@ -876,7 +878,7 @@ Changes in release 3.23.x (Recommended; Gamma) * News-3.23.1:: Changes in release 3.23.1 * News-3.23.0:: Changes in release 3.23.0 -Changes in release 3.22.x +Changes in release 3.22.x (Older; Still supported) * News-3.22.35:: Changes in release 3.22.35 * News-3.22.34:: Changes in release 3.22.34 @@ -1814,7 +1816,8 @@ In-memory hash tables which are used as temporary tables. @item Handles large databases. We are using @strong{MySQL} with some -databases that contain 50,000,000 records. +databases that contain 50,000,000 records and we know of users that +uses @code{MySQL} with 60,000 tables and about 5,000,000,000 rows @item All columns have default values. You can use @code{INSERT} to insert a @@ -9465,16 +9468,13 @@ section in this manual. @xref{SHOW VARIABLES}. The tuning server parameters section includes information of how to optimize these. @xref{Server parameters}. -@item -Sg, --skip-grant-tables -This option causes the server not to use the privilege system at all. This -gives everyone @emph{full access} to all databases! (You can tell a running -server to start using the grant tables again by executing @code{mysqladmin -flush-privileges} or @code{mysqladmin reload}.) - @item --safe-mode Skip some optimize stages. Implies @code{--skip-delay-key-write}. +@item --safe-show-database +Don't show databases for which the user doesn't have any privileges. + @item --secure IP numbers returned by the @code{gethostbyname()} system call are checked to make sure they resolve back to the original hostname. This @@ -9494,6 +9494,12 @@ in this feature). Ignore the @code{delay_key_write} option for all tables. @xref{Server parameters}. +@item -Sg, --skip-grant-tables +This option causes the server not to use the privilege system at all. This +gives everyone @emph{full access} to all databases! (You can tell a running +server to start using the grant tables again by executing @code{mysqladmin +flush-privileges} or @code{mysqladmin reload}.) + @item --skip-locking Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must shut down the server. @xref{Stability}. Note that in @strong{MySQL} Version @@ -20242,72 +20248,85 @@ The output resembles that shown below, though the format and numbers may differ somewhat: @example -+-------------------------+---------------------------------+ -| Variable_name | Value | -+-------------------------+---------------------------------+ -| ansi_mode | OFF | -| back_log | 50 | -| basedir | /usr/local/mysql/ | -| bdb_cache_size | 1048540 | -| bdb_home | /usr/local/mysql/data/ | -| bdb_logdir | | -| bdb_tmpdir | /tmp/ | -| binlog_cache_size | 32768 | -| character_set | latin1 | -| character_sets | latin1 | -| connect_timeout | 5 | -| concurrent_insert | ON | -| datadir | /usr/local/mysql/data/ | -| delay_key_write | ON | -| delayed_insert_limit | 100 | -| delayed_insert_timeout | 300 | -| delayed_queue_size | 1000 | -| join_buffer_size | 131072 | -| flush | OFF | -| flush_time | 0 | -| init_file | | -| interactive_timeout | 28800 | -| key_buffer_size | 16776192 | -| language | /usr/local/mysql/share/english/ | -| log | OFF | -| log_update | OFF | -| log_bin | OFF | -| log_slave_updates | OFF | -| long_query_time | 10 | -| low_priority_updates | OFF | -| lower_case_table_names | 0 | -| max_allowed_packet | 1047552 | -| max_connections | 100 | -| max_connect_errors | 10 | -| max_delayed_threads | 20 | -| max_heap_table_size | 16777216 | -| max_join_size | 4294967295 | -| max_sort_length | 1024 | -| max_tmp_tables | 32 | -| max_write_lock_count | 4294967295 | -| myisam_sort_buffer_size | 8388608 | -| net_buffer_length | 16384 | -| net_retry_count | 10 | -| open_files_limit | 0 | -| pid_file | /usr/local/mysql/data/tik.pid | -| port | 3306 | -| protocol_version | 10 | -| record_buffer | 131072 | -| skip_locking | ON | -| skip_networking | OFF | -| skip_show_database | OFF | -| slow_launch_time | 2 | -| socket | /tmp/mysql.sock | -| sort_buffer | 2097116 | -| table_cache | 64 | -| table_type | MYISAM | -| thread_stack | 131072 | -| thread_cache_size | 3 | -| tmp_table_size | 1048576 | -| tmpdir | /tmp/ | -| version | 3.23.21-beta-debug | -| wait_timeout | 28800 | -+-------------------------+---------------------------------+ ++-------------------------+---------------------------+ +| Variable_name | Value | ++-------------------------+---------------------------+ +| ansi_mode | OFF | +| back_log | 50 | +| basedir | /my/monty/ | +| bdb_cache_size | 16777216 | +| bdb_home | /my/monty/data/ | +| bdb_max_lock | 10000 | +| bdb_logdir | | +| bdb_shared_data | OFF | +| bdb_tmpdir | /tmp/ | +| binlog_cache_size | 32768 | +| concurrent_insert | ON | +| connect_timeout | 5 | +| datadir | /my/monty/data/ | +| delay_key_write | ON | +| delayed_insert_limit | 100 | +| delayed_insert_timeout | 300 | +| delayed_queue_size | 1000 | +| flush | OFF | +| flush_time | 0 | +| have_bdb | YES | +| have_gemeni | NO | +| have_innobase | YES | +| have_raid | YES | +| have_ssl | NO | +| init_file | | +| interactive_timeout | 28800 | +| join_buffer_size | 131072 | +| key_buffer_size | 16776192 | +| language | /my/monty/share/english/ | +| large_files_support | ON | +| log | OFF | +| log_update | OFF | +| log_bin | OFF | +| log_slave_updates | OFF | +| long_query_time | 10 | +| low_priority_updates | OFF | +| lower_case_table_names | 0 | +| max_allowed_packet | 1048576 | +| max_binlog_cache_size | 4294967295 | +| max_connections | 100 | +| max_connect_errors | 10 | +| max_delayed_threads | 20 | +| max_heap_table_size | 16777216 | +| max_join_size | 4294967295 | +| max_sort_length | 1024 | +| max_tmp_tables | 32 | +| max_write_lock_count | 4294967295 | +| myisam_recover_options | DEFAULT | +| myisam_sort_buffer_size | 8388608 | +| net_buffer_length | 16384 | +| net_read_timeout | 30 | +| net_retry_count | 10 | +| net_write_timeout | 60 | +| open_files_limit | 0 | +| pid_file | /my/monty/data/donna.pid | +| port | 3306 | +| protocol_version | 10 | +| record_buffer | 131072 | +| query_buffer_size | 0 | +| safe_show_database | OFF | +| server_id | 0 | +| skip_locking | ON | +| skip_networking | OFF | +| skip_show_database | OFF | +| slow_launch_time | 2 | +| socket | /tmp/mysql.sock | +| sort_buffer | 2097116 | +| table_cache | 64 | +| table_type | MYISAM | +| thread_cache_size | 4 | +| thread_stack | 65536 | +| tmp_table_size | 1048576 | +| tmpdir | /tmp/ | +| version | 3.23.29a-gamma-debug | +| wait_timeout | 28800 | ++-------------------------+---------------------------+ @end example Each option is described below. Values for buffer sizes, lengths, and stack @@ -20427,6 +20446,21 @@ tables will be closed (to free up resources and sync things to disk). We only recommend this option on Win95, Win98, or on systems where you have very little resources. +@item @code{have_bdb} +@code{YES} if @code{mysqld} supports Berkeley DB tables. @code{DISABLED} +if @code{--skip-bdb} is used. +@item @code{have_gemeni} +@code{YES} if @code{mysqld} supports Gemeni tables. @code{DISABLED} +if @code{--skip-gemeni} is used. +@item @code{have_innobase} +@code{YES} if @code{mysqld} supports Innobase tables. @code{DISABLED} +if @code{--skip-innobase} is used. +@item @code{have_raid} +@code{YES} if @code{mysqld} supports the @code{RAID} option. +@item @code{have_ssl} +@code{YES} if @code{mysqld} supports SSL (encryption) on the client/server +protocol. + @item @code{init_file} The name of the file specified with the @code{--init-file} option when you start the server. This is a file of SQL statements you want the @@ -20606,6 +20640,12 @@ want to increase this value. The initial allocation of the query buffer. If most of your queries are long (like when inserting blobs), you should increase this! +@item @code{safe_show_databases} +Don't show databases for which the user doesn't have any database or +table privileges. This can improve security if you're concerned about +people being able to see what databases other users have. See also +@code{skip_show_databases}. + @item @code{server_id} The value of the @code{--server-id} option. @@ -20616,10 +20656,10 @@ Is OFF if @code{mysqld} uses external locking. Is ON if we only allow local (socket) connections. @item @code{skip_show_databases} -This prevents people from doing @code{SHOW DATABASES} if they don't -have the @code{PROCESS_PRIV} privilege. This can improve security if -you're concerned about people being able to see what databases and -tables other users have. +This prevents people from doing @code{SHOW DATABASES} if they don't have +the @code{PROCESS_PRIV} privilege. This can improve security if you're +concerned about people being able to see what databases other users +have. See also @code{safe_show_databases}. @item @code{slow_launch_time} If creating the thread takes longer than this value (in seconds), the @@ -38284,9 +38324,6 @@ you should ftp all the relevant files to @end itemize - - - @page @cindex environment variables, list of @node Environment variables, Users, MySQL internals, Top @@ -38371,7 +38408,7 @@ variables to modify the behavior of @strong{MySQL}. @xref{Option files}. @page @cindex users, of MySQL @cindex news sites -@node Users, Contrib, Environment variables, Top +@node Users, MySQL customer usage, Environment variables, Top @appendix Some MySQL Users @appendixsec General News Sites @@ -38519,6 +38556,8 @@ support @strong{MySQL}} @c @item @uref{http://dynodns.net, Free dynamic DNS implementation} @c EMAIL: A Moore <amoore@mooresystems.com> +@item @uref{http://www.hn.org/, Hammernode; Public DNS Servers} + @item @uref{http://www.fdns.net/, Free 3rd level domains} @item @uref{http://worldcommunity.com/, Online Database} @@ -38774,9 +38813,43 @@ Washington's Eastside residents and businesses} Send any additions to this list to @email{webmaster@@mysql.com}. @page +@cindex MySQL usage +@node MySQL customer usage, Contrib, Users, Top +@appendix MySQL customer usage + +The section 'Some MySQL Users' contains a lot of different links to +@strong{MySQL} users but doesn't provide that much information about how +they are using @strong{MySQL}. @xref{Users}. This manual section is to +give you an idea of how other @strong{MySQL} users are using +@strong{MySQL} to solve their problems. + +This manual section is very new and we plan to add more stories here +shortly. If you are interested in contributing of how you use +@code{MySQL} in a unique environment or have success store about how you +use @code{MySQL}, you can write to @code{docs@@lists.mysql.com} with +subject @code{Success:}. Note that as we are very busy it may take some +time before you get some feedback for your story. + +@itemize @bullet +@item +I think you might be interested in my database size. The whole database +is currently on 15 servers and I think it's about 60.000 of tables +containing about 5.000.000.000 of rows. My mostly loaded server +currently holds about 10.000 of tables with 1.000.000.000 of rows in it. +Hugest tables have about 50.000.000 of rows, and this value will raise +as soon as I'll move to 2.4 kernel with large files. Currently I have to +delete much of logs for large sites to hold table sizes in 2Gb. + +Peter Zaitsev, Spylog.ru. +@item +Texas Instrument is using MySQL for handling tables that contains up +o 2,000 million rows in a validation regression database. +@end itemize + +@page @cindex contributed programs @cindex programs, contributed -@node Contrib, Credits, Users, Top +@node Contrib, Credits, MySQL customer usage, Top @appendix Contributed Programs Many users of @strong{MySQL} have contributed @emph{very} useful support @@ -39448,12 +39521,14 @@ interested in. @node Credits, News, Contrib, Top @appendix Credits -The following persons have helped us make MySQL what it is today +The following persons and companies have helped us make MySQL what it is +today: @cindex developers, list of @menu * Developers:: * Contributors:: +* Supporters:: @end menu @node Developers, Contributors, Credits, Credits @@ -39635,7 +39710,7 @@ Allan Larsson (The BOSS for TCX DataKonsult AB). @end table @cindex contributors, list of -@node Contributors, , Developers, Credits +@node Contributors, Supporters, Developers, Credits @appendixsubsec Contributors to MySQL Contributors to the @strong{MySQL} distribution are listed below, in @@ -39705,6 +39780,12 @@ For porting PHP to @strong{MySQL}. For the first @strong{MySQL} manual. And a lot of spelling/language fixes for the FAQ (that turned into the @strong{MySQL} manual a long time ago). +@item Yan Cailin +First translator of the MySQL Reference Manual into simplified chinese +in early 2000 on which the Big5 and HK coded +(@uref{http://mysql.hitstar.com, mysql.hitstar.com}) versions were +based. @uref{http://linuxdb.yeah.net, Personal home page at +linuxdb.yeah.net}. @item Giovanni Maruzzelli @email{maruzz@@matrice.it} For porting iODBC (Unix ODBC). @item Chris Provenzano @@ -39860,6 +39941,24 @@ ODBC and VisualC++ interface questions. @code{DBD}, Linux, some SQL syntax questions. @end table +@cindex contributing companies, list of +@node Supporters, , Contributors, Credits +@appendixsubsec Supporters to MySQL + +The following companies has helped us finance development of +@strong{MySQL} by either paying us for developing a new feature, +developed a @strong{MySQL} feature themself or by giving us hardware for +@strong{MySQL} development. + +@multitable @columnfractions .3 .7 +@item Va Linux / Andover.net @tab Replication +@item NuSphere @tab Editing of the @strong{MySQL} manual. +@item Intel @tab Contributed to development on Windows and Linux platforms +@item Compaq @tab Contributed to Development on Linux-alpha +@item SWSoft @tab Development on the embedded @code{mysqld} version. +@item FutureQuest @tab @code{--skip-show-variables} +@end multitable + @node News, Bugs, Credits, Top @appendix MySQL change history @@ -39951,6 +40050,12 @@ though, so Version 3.23 is not released as a stable version yet. @appendixsubsec Changes in release 3.23.30 @itemize @bullet @item +Added option @code{--safe-show-databases}. +@item +Added @code{have_bdb}, @code{have_gemeni}, @code{have_innobase}, +@code{have_raid} and @code{have_ssl} to @code{SHOW VARIABLES} to make it +easy to test for supported extensions. +@item Added option @code{open-files-limit} to @code{mysqld}. @item Changed option @code{open-files} to @code{open-files-limit} in diff --git a/sql/gen_lex_hash.cc b/sql/gen_lex_hash.cc index e77081c64a0..97a3bc6f518 100644 --- a/sql/gen_lex_hash.cc +++ b/sql/gen_lex_hash.cc @@ -472,7 +472,7 @@ int main(int argc,char **argv) int error; MY_INIT(argv[0]); - start_value=5206280L; best_t1=590774L; best_t2=5977654L; best_type=1; /* mode=6229 add=2 func_type: 0 */ + start_value=5307411L; best_t1=4597287L; best_t2=3375760L; best_type=1; /* mode=4783 add=5 func_type: 0 */ if (get_options(argc,(char **) argv)) exit(1); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 2f171259699..6ce43d6a560 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -520,7 +520,7 @@ extern ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size, binlog_cache_size, max_binlog_cache_size; extern ulong specialflag, current_pid; extern bool low_priority_updates; -extern bool opt_sql_bin_update; +extern bool opt_sql_bin_update, opt_safe_show_db; extern char language[LIBLEN],reg_ext[FN_EXTLEN],blob_newline; extern const char **errmesg; /* Error messages */ extern byte last_ref[MAX_REFLENGTH]; /* Index ref of keys */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d214bf46533..d48171d49be 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -146,6 +146,33 @@ static uint handler_count; static bool opt_console=0; #endif +#ifdef HAVE_BERKELEY_DB +SHOW_COMP_OPTION have_berkeley_db=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_berkeley_db=SHOW_OPTION_NO; +#endif +#ifdef HAVE_GEMENI_DB +SHOW_COMP_OPTION have_gemeni=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_gemeni=SHOW_OPTION_NO; +#endif +#ifdef HAVE_INNOBASE_DB +SHOW_COMP_OPTION have_innobase=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_innobase=SHOW_OPTION_NO; +#endif +#ifdef USE_RAID +SHOW_COMP_OPTION have_raid=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_raid=SHOW_OPTION_NO; +#endif +#ifdef HAVE_OPENSSL +SHOW_COMP_OPTION have_ssl=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_ssl=SHOW_OPTION_NO; +#endif + + static bool opt_skip_slave_start = 0; // if set, slave is not autostarted static ulong opt_specialflag=SPECIAL_ENGLISH; static my_socket unix_sock= INVALID_SOCKET,ip_sock= INVALID_SOCKET; @@ -155,9 +182,10 @@ static my_string opt_logname=0,opt_update_logname=0, static char mysql_home[FN_REFLEN],pidfile_name[FN_REFLEN]; static pthread_t select_thread; static bool opt_log,opt_update_log,opt_bin_log,opt_slow_log,opt_noacl, - opt_disable_networking=0, opt_bootstrap=0,opt_skip_show_db=0, - opt_ansi_mode=0,opt_myisam_log=0, opt_large_files=sizeof(my_off_t) > 4; -bool opt_sql_bin_update = 0, opt_log_slave_updates = 0; + opt_disable_networking=0, opt_bootstrap=0,opt_skip_show_db=0, + opt_ansi_mode=0,opt_myisam_log=0, + opt_large_files=sizeof(my_off_t) > 4; +bool opt_sql_bin_update = 0, opt_log_slave_updates = 0, opt_safe_show_db=0; FILE *bootstrap_file=0; int segfaulted = 0; // ensure we do not enter SIGSEGV handler twice extern MASTER_INFO glob_mi; @@ -2322,7 +2350,7 @@ enum options { OPT_INNOBASE_DATA_HOME_DIR,OPT_INNOBASE_DATA_FILE_PATH, OPT_INNOBASE_LOG_GROUP_HOME_DIR, OPT_INNOBASE_LOG_ARCH_DIR, OPT_INNOBASE_LOG_ARCHIVE, - OPT_INNOBASE_FLUSH_LOG_AT_TRX_COMMIT + OPT_INNOBASE_FLUSH_LOG_AT_TRX_COMMIT, OPT_SAFE_SHOW_DB }; static struct option long_options[] = { @@ -2424,6 +2452,7 @@ static struct option long_options[] = { {"replicate-rewrite-db", required_argument, 0, (int) OPT_REPLICATE_REWRITE_DB}, {"safe-mode", no_argument, 0, (int) OPT_SAFE}, + {"safe-show-database", no_argument, 0, (int) OPT_SAFE_SHOW_DB}, {"socket", required_argument, 0, (int) OPT_SOCKET}, {"server-id", required_argument, 0, (int) OPT_SERVER_ID}, {"set-variable", required_argument, 0, 'O'}, @@ -2593,6 +2622,11 @@ struct show_var_st init_vars[]= { {"delayed_queue_size", (char*) &delayed_queue_size, SHOW_LONG}, {"flush", (char*) &myisam_flush, SHOW_MY_BOOL}, {"flush_time", (char*) &flush_time, SHOW_LONG}, + {"have_bdb", (char*) &have_berkeley_db, SHOW_HAVE}, + {"have_gemeni", (char*) &have_gemeni, SHOW_HAVE}, + {"have_innobase", (char*) &have_innobase, SHOW_HAVE}, + {"have_raid", (char*) &have_raid, SHOW_HAVE}, + {"have_ssl", (char*) &have_ssl, SHOW_HAVE}, {"init_file", (char*) &opt_init_file, SHOW_CHAR_PTR}, {"interactive_timeout", (char*) &net_interactive_timeout, SHOW_LONG}, {"join_buffer_size", (char*) &join_buff_size, SHOW_LONG}, @@ -2631,6 +2665,7 @@ struct show_var_st init_vars[]= { {"protocol_version", (char*) &protocol_version, SHOW_INT}, {"record_buffer", (char*) &my_default_record_cache_size,SHOW_LONG}, {"query_buffer_size", (char*) &query_buff_size, SHOW_LONG}, + {"safe_show_database", (char*) &opt_safe_show_db, SHOW_BOOL}, {"server_id", (char*) &server_id, SHOW_LONG}, {"skip_locking", (char*) &my_disable_locking, SHOW_MY_BOOL}, {"skip_networking", (char*) &opt_disable_networking, SHOW_BOOL}, @@ -3347,11 +3382,13 @@ static void get_options(int argc,char **argv) break; case OPT_BDB_SKIP: berkeley_skip=1; + have_berkeley_db=SHOW_OPTION_DISABLED; break; #endif #ifdef HAVE_INNOBASE_DB case OPT_INNOBASE_SKIP: innobase_skip=1; + have_innobase_db=SHOW_HAVE_DISABLED; break; case OPT_INNOBASE_DATA_HOME_DIR: innobase_data_home_dir=optarg; @@ -3410,6 +3447,9 @@ static void get_options(int argc,char **argv) case OPT_MASTER_CONNECT_RETRY: master_connect_retry= atoi(optarg); break; + case (int) OPT_SAFE_SHOW_DB: + opt_safe_show_db=1; + break; default: fprintf(stderr,"%s: Unrecognized option: %c\n",my_progname,c); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 1d4bdffeb61..ed373f58b00 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -21,8 +21,6 @@ #include "sql_select.h" // For select_describe #include "sql_acl.h" #include <my_dir.h> -#undef USE_RAID -#define USE_RAID #ifdef HAVE_BERKELEY_DB #include "ha_berkeley.h" // For berkeley_show_logs @@ -77,10 +75,17 @@ mysqld_show_dbs(THD *thd,const char *wild) List_iterator<char> it(files); while ((file_name=it++)) { - thd->packet.length(0); - net_store_data(&thd->packet,file_name); - if (my_net_write(&thd->net,(char*) thd->packet.ptr(),thd->packet.length())) - DBUG_RETURN(-1); + if (!opt_safe_show_db || thd->master_access || + acl_get(thd->host, thd->ip, (char*) &thd->remote.sin_addr, + thd->priv_user, file_name) || + (grant_option && !check_grant_db(thd, file_name))) + { + thd->packet.length(0); + net_store_data(&thd->packet,file_name); + if (my_net_write(&thd->net, (char*) thd->packet.ptr(), + thd->packet.length())) + DBUG_RETURN(-1); + } } send_eof(&thd->net); DBUG_RETURN(0); @@ -1088,6 +1093,14 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) case SHOW_INT: net_store_data(&packet2,(uint32) *(int*) variables[i].value); break; + case SHOW_HAVE: + { + SHOW_COMP_OPTION tmp= *(SHOW_COMP_OPTION*) variables[i].value; + net_store_data(&packet2, (tmp == SHOW_OPTION_NO ? "NO" : + tmp == SHOW_OPTION_YES ? "YES" : + "DISABLED")); + break; + } case SHOW_CHAR: net_store_data(&packet2,variables[i].value); break; diff --git a/sql/structs.h b/sql/structs.h index f1db62f5d9e..36f503312c0 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -125,7 +125,9 @@ typedef struct { enum SHOW_TYPE { SHOW_LONG,SHOW_CHAR,SHOW_INT,SHOW_CHAR_PTR,SHOW_BOOL, SHOW_MY_BOOL,SHOW_OPENTABLES,SHOW_STARTTIME,SHOW_QUESTION, - SHOW_LONG_CONST, SHOW_INT_CONST}; + SHOW_LONG_CONST, SHOW_INT_CONST, SHOW_HAVE}; + +enum SHOW_COMP_OPTION { SHOW_OPTION_YES, SHOW_OPTION_NO, SHOW_OPTION_DISABLED}; struct show_var_st { const char *name; |