From 2877d3d0ab31f3088f35f7e9e2e63880edc62e14 Mon Sep 17 00:00:00 2001 From: "arjen@fred.bitbike.com" <> Date: Fri, 17 May 2002 13:36:38 +1000 Subject: [PATCH 1/6] Re-merging and fixups of new User Resources section. --- Docs/manual.de.texi | 68 +++++++++++++++++++++- Docs/manual.texi | 137 ++++++++++++++------------------------------ 2 files changed, 108 insertions(+), 97 deletions(-) diff --git a/Docs/manual.de.texi b/Docs/manual.de.texi index 798eb7616f6..6dc81862f72 100644 --- a/Docs/manual.de.texi +++ b/Docs/manual.de.texi @@ -16998,6 +16998,7 @@ neu starten, um @code{mysqldump} benutzen zu k * Privilege changes:: * Default privileges:: * Adding users:: +* User resources:: * Passwords:: * Password security:: @end menu @@ -17653,7 +17654,7 @@ m @code{mysql_install_db} laufen lassen. -@node Adding users, Passwords, Default privileges, User Account Management +@node Adding users, User resources, Default privileges, User Account Management @c German node Benutzer hinzufügen @subsection Neue MySQL-Benutzer hinzufügen @@ -17862,8 +17863,71 @@ einzuf @uref{http://www.mysql.com/downloads/contrib/,Contrib-Verzeichnis der MySQL-Website}. +@node User resources, Passwords, Adding users, User Account Management +@c New section added by arjen 2002-05-17 to keep en/de in sync +@subsection Limiting user resources -@node Passwords, Password security, Adding users, User Account Management +@c FIX Original section text - to be translated. +@c FIX Also check manual.texi for other mentions of MAX_..._PER_HOUR + +Starting from MySQL 4.0.2 one can limit certain resources per user. + +So far, the only available method of limiting user usage of MySQL +server resources has been setting the @code{max_user_connections} +startup variable to a non-zero value. But this method is strictly +global and does not allow for management of individual users, which +could be of paricular interest to Internet Service Providers. + +Therefore, management of three resources is introduced on the +individual user level: + +@itemize @bullet +@item Number of all queries per hour: +All commands that could be run by a user. +@item Number of all updates per hour: +Any command that changes any table or database. +@item Number of connections made per hour: +New connections opened per hour. +@end itemize + +A user in the aforementioned context is a single entry in the +@code{user} table, which is uniquely identified by its @code{user} +and @code{host} columns. + +All users are by default not limited in using the above resources, +unless the limits are granted to them. These limits can be granted +@strong{only} via global @code{GRANT (*.*)}, using this syntax: + +@example +GRANT ... WITH MAX_QUERIES_PER_HOUR = N1 + MAX_UPDATES_PER_HOUR = N2 + MAX_CONNECTIONS_PER_HOUR = N3; +@end example + +One can specify any combination of the above resources. +N1, N2 and N3 are integers and stands for count / hour. + +If user reaches any of the above limits withing one hour, his +connection will be terminated or refused and the appropriate error +message shall be issued. + +Current usage values for a particular user can be flushed (set to zero) +by issuing a @code{GRANT} statement with any of the above clauses, +including a @code{GRANT} statement with the current values. + +Also, current values for all users will be flushed if privileges are +reloaded (in the server or using @code{mysqladmin reload}) +or if the @code{FLUSH USER_RESOURCES} command is issued. + +The feature is enabled as soon as a single user is granted with any +of the limiting @code{GRANT} clauses. + +As a prerequisite for enabling this feature, the @code{user} table in +the @code{mysql} database must contain the additional columns, as +defined in the table creation scripts @code{mysql_install_db} and +@code{mysql_install_db.sh} in @file{scripts} subdirectory. + +@node Passwords, Password security, User resources, User Account Management @c German node Passwörter @subsection Passwörter einrichten diff --git a/Docs/manual.texi b/Docs/manual.texi index 1d67f3f7ed1..e4466122230 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -16423,8 +16423,9 @@ GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...] [CIPHER cipher [AND]] [ISSUER issuer [AND]] [SUBJECT subject]] - [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR=# | MAX_UPDATES_PER_HOUR=#| - MAX_CONNECTIONS_PER_HOUR=#]] + [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR=# | + MAX_UPDATES_PER_HOUR=# | + MAX_CONNECTIONS_PER_HOUR=#]] REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...] ON @{tbl_name | * | *.* | db_name.*@} @@ -16588,7 +16589,7 @@ You should be careful to whom you give the @strong{grant} privilege, as two users with different privileges may be able to join privileges! @code{MAX_QUERIES_PER_HOUR=#}, @code{MAX_UPDATES_PER_HOUR=#} and -@code{MAX_CONNECTIONS_PER_HOUR=#} limits the limits the number of +@code{MAX_CONNECTIONS_PER_HOUR=#} limit the number of queries/updates and logins the user can do during one hour. If @code{#} is 0 (default), then this means that there is no limitations for the user. @xref{User resources}. @@ -17074,71 +17075,65 @@ You can also use @code{xmysqladmin}, @code{mysql_webadmin}, and even You can find these utilities in the Contrib directory of the MySQL web site (@uref{http://www.mysql.com/Downloads/Contrib/}). - @node User resources, Passwords, Adding users, User Account Management @subsection Limiting user resources Starting from MySQL 4.0.2 one can limit certain resources per user. -Before the only available method of limiting user usage of MySQL server -resources has been setting @code{max_user_connections} startup variable -to some non-zero value at MySQL startup. But this method is strictly a -global one and does not allow management of individual users, which -could be of paricular interest to Interent Service Providers. +So far, the only available method of limiting user usage of MySQL +server resources has been setting the @code{max_user_connections} +startup variable to a non-zero value. But this method is strictly +global and does not allow for management of individual users, which +could be of paricular interest to Internet Service Providers. Therefore, management of three resources is introduced on the -individual user level : +individual user level: @itemize @bullet -@item -Number of all queries per hour -@item -Number of all updates per hour. As updates is considered any command that -changes any table or database. -@item -Number of connections made per hour +@item Number of all queries per hour: +All commands that could be run by a user. +@item Number of all updates per hour: +Any command that changes any table or database. +@item Number of connections made per hour: +New connections opened per hour. @end itemize -A user in the above context is single entry in user table, which is -uniquely identified by user and host columns. +A user in the aforementioned context is a single entry in the +@code{user} table, which is uniquely identified by its @code{user} +and @code{host} columns. All users are by default not limited in using the above resources, -unless the limits are GRANTed to them. These limits can be granted -ONLY by global GRANT (*.*) and with a following syntax : +unless the limits are granted to them. These limits can be granted +@strong{only} via global @code{GRANT (*.*)}, using this syntax: @example -GRANT ... WITH MAX_QUERIES_PER_HOUR = N1 MAX_UPDATES_PER_HOUR = N2 -MAX_CONNECTIONS_PER_HOUR = N3; +GRANT ... WITH MAX_QUERIES_PER_HOUR = N1 + MAX_UPDATES_PER_HOUR = N2 + MAX_CONNECTIONS_PER_HOUR = N3; @end example One can specify any combination of the above resources. N1, N2 and N3 are integers and stands for count / hour. -If user reaches any of the above limits withing one hour, his connection -will be broken or refused and the appropriate error message shall be -issued. +If user reaches any of the above limits withing one hour, his +connection will be terminated or refused and the appropriate error +message shall be issued. -Current values of particular user resources can be flushed (set to -zero) by issuing a grant statement with any of the above limiting -clauses, including a GRANT statement with current value(s) of tha -resource(s). +Current usage values for a particular user can be flushed (set to zero) +by issuing a @code{GRANT} statement with any of the above clauses, +including a @code{GRANT} statement with the current values. Also, current values for all users will be flushed if privileges are -reloaded or if the folloing new flush command is issuedd : +reloaded (in the server or using @code{mysqladmin reload}) +or if the @code{FLUSH USER_RESOURCES} command is issued. -@example -FLUSH USER_RESOURCES -@end example +The feature is enabled as soon as a single user is granted with any +of the limiting @code{GRANT} clauses. -Also, current values for all users will be flushed with mysqladmin -reload command. - -This new feature is enabled as soon as single user is @code{GRANT}ed with -some of the limiting @code{GRANT} clauses. - -As a prerequisite for enabling this features, user table in mysql -database must have the additional columns, just as defined in table -creation scripts @code{mysql_install_db} in the @code{scripts} directory. +As a prerequisite for enabling this feature, the @code{user} table in +the @code{mysql} database must contain the additional columns, as +defined in the table creation scripts @code{mysql_install_db} and +@code{mysql_install_db.sh} in @file{scripts} subdirectory. @node Passwords, Password security, User resources, User Account Management @subsection Setting Up Passwords @@ -19105,7 +19100,7 @@ memory. This command will not remove any queries from the cache, unlike @item @code{STATUS} @tab Resets most status variables to zero. This is something one should only use when debugging a query. -@item @code{USER_RESOURCES} @tab Resets all user resources to zero. This will enalbe blocked users to login again. @xref{User resources}. +@item @code{USER_RESOURCES} @tab Resets all user resources to zero. This will enable blocked users to login again. @xref{User resources}. @end multitable You can also access each of the commands shown above with the @code{mysqladmin} @@ -49493,62 +49488,14 @@ Added new columns @code{Null} and @code{Index_type} to @code{SHOW INDEX} output. @item Added @code{--no-beep} and @code{--prompt} options to @code{mysql} command-line client. -@c FIX arjen 2002-05-16 below also needs to be added elsewhere in the manual. -@item New feature: management of user resources - -So far, the only available method of limiting user usage of MySQL -server resources has been setting the @code{max_user_connections} -startup variable to a non-zero value. But this method is strictly -global and does not allow for management of individual users, which -could be of paricular interest to Internent Service Providers. - -Therefore, management of three resources is introduced on the -individual user level : - -@itemize @bullet -@item number of all queries per hour: -any command that cahnges any table or database. -@item number of all updates per hour: -all commands that could be run by a user. -@item number of connections made per hour: -a user is a single entry in the @code{user} table, which is uniquely -identified by its @code{user} and @code{host} columns. -@end itemize - -All users are by default not limited in using the above resources, -unless the limits are granted to them. These limits can be granted -@strong{only} via global @code{GRANT (*.*)}, using this syntax: - +@item +New feature: management of user resources. @example GRANT ... WITH MAX_QUERIES_PER_HOUR = N1 MAX_UPDATES_PER_HOUR = N2 MAX_CONNECTIONS_PER_HOUR = N3; @end example - -It is not required that all three resources are specified. -N1, N2, and N3 are integers and limit the number of times that a user -can perform the corresponding type of command or number of logins, -per hour. - -If user reaches any of the above limits withing one hour, his -connection will be terminated or refused and the appropriate error -message shall be issued. - -Current usage values for a particular user can be flushed (set to zero) -by issuing a grant statement with any of the above clauses, including -a @code{GRANT} statement with current values. - -Also, current values for all users will be flushed if privileges are -reloaded (in the server or using @code{mysqladmin reload}) -or if the @code{FLUSH USER_RESOURCES} command is issued. - -The feature is enabled as soon as single user is granted with some -some of the limiting @code{GRANT} clauses. - -As a prerequisite for enabling this feature, the @code{user} table in -the @code{mysql} database must contain the additional columns, as -defined in the table creation scripts @code{mysql_install_db} and -@code{mysql_install_db.sh} in @file{scripts} subdirectory. +@xref{User resources}. @end itemize @node News-4.0.1, News-4.0.0, News-4.0.2, News-4.0.x From ea3094f09d0d9274c770c6fdeb0f3c9730b2cb25 Mon Sep 17 00:00:00 2001 From: "arjen@fred.bitbike.com" <> Date: Fri, 17 May 2002 13:43:19 +1000 Subject: [PATCH 2/6] NetWare trademark fixup (noted by Randolf Richardson). --- Docs/Manual_style_guidelines.txt | 2 ++ Docs/manual.de.texi | 6 +++--- Docs/manual.texi | 8 ++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Docs/Manual_style_guidelines.txt b/Docs/Manual_style_guidelines.txt index c091eae7a39..da38268abd2 100644 --- a/Docs/Manual_style_guidelines.txt +++ b/Docs/Manual_style_guidelines.txt @@ -263,3 +263,5 @@ It's "full-text", not "fulltext". Logical NOT/OR/AND are operators, not functions, so they take operands, not arguments. +It's NetWare, not Netware (as per Novell's trademark guidelines). + diff --git a/Docs/manual.de.texi b/Docs/manual.de.texi index 6dc81862f72..94c822b94da 100644 --- a/Docs/manual.de.texi +++ b/Docs/manual.de.texi @@ -11573,10 +11573,10 @@ Weile nichts von ihnen geh @node Novell Netware, , BeOS, Operating System Specific Notes @c German node Novell Netware -@subsection Anmerkungen zu Novell Netware +@subsection Anmerkungen zu Novell NetWare -Wir sind sehr daran interessiert, MySQL auf Netware ans Laufen zu bringen, -aber leider kennen wir niemanden, der sich mit Netware auskennt oder Zeit hat, +Wir sind sehr daran interessiert, MySQL auf NetWare ans Laufen zu bringen, +aber leider kennen wir niemanden, der sich mit NetWare auskennt oder Zeit hat, eine Portierung durchzuführen. Wir sind daran interessiert, jemanden für eine Portierung zu finden, und diff --git a/Docs/manual.texi b/Docs/manual.texi index e4466122230..8f781fdda85 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -8571,7 +8571,7 @@ information. * Other Unix Notes:: Other Unix Notes * OS/2:: OS/2 Notes * BeOS:: BeOS Notes -* Novell Netware:: Novell Netware Notes +* Novell Netware:: Novell NetWare Notes @end menu @@ -11164,10 +11164,10 @@ in a while. @node Novell Netware, , BeOS, Operating System Specific Notes -@subsection Novell Netware Notes +@subsection Novell NetWare Notes -We are really interested in getting MySQL to work on Netware, but -unfortunately we don't have any person who knows Netware or has time to do +We are really interested in getting MySQL to work on NetWare, but +unfortunately we don't have any person who knows NetWare or has time to do a port. We are interested in finding someone to do a port, and we will help them From d26b71810060c0bbb885c86c62ba2750168d0693 Mon Sep 17 00:00:00 2001 From: "arjen@fred.bitbike.com" <> Date: Fri, 17 May 2002 14:47:48 +1000 Subject: [PATCH 3/6] "Wikified" Manual_style_guidelines.txt --- ...delines.txt => ManualStyleGuidelines.wiki} | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) rename Docs/{Manual_style_guidelines.txt => ManualStyleGuidelines.wiki} (87%) diff --git a/Docs/Manual_style_guidelines.txt b/Docs/ManualStyleGuidelines.wiki similarity index 87% rename from Docs/Manual_style_guidelines.txt rename to Docs/ManualStyleGuidelines.wiki index da38268abd2..3329370411c 100644 --- a/Docs/Manual_style_guidelines.txt +++ b/Docs/ManualStyleGuidelines.wiki @@ -1,4 +1,14 @@ -MySQL Manual style guidelines +OriginalAuthor: PaulDuBois + +!!! ManualStyleGuidelines + +''Version 1.0'' + +!! Revision History + +* 2002-05-17 ArjenLentz - Version 1.0, Posted to Wiki + +!! MySQL Manual Style Guidelines Paul DuBois @@ -9,15 +19,16 @@ do reflect current working practice. Arjen asked me to post this on the list some time ago so that it can be discussed with a view to adding it (or something like it) to the source tree. So here it is! -MySQL Reference Manual Style Guidelines +Present in the mysql-4.0 source tree: Docs/ManualStyleGuidelines.wiki + The manual is written in UK English, not American English. This means: -colour, not color -behaviour, not behavior -authorise, not authorize -optimise, not optimize -etc. + colour, not color + behaviour, not behavior + authorise, not authorize + optimise, not optimize + etc. Write MySQL, not @strong{MySQL} (the manual used to use the latter, but no more). @@ -28,12 +39,12 @@ Use uppercase for SQL keywords, functions names, etc., when writing SQL statement examples. To write a list of items, add commas after all items preceding the last one: -Correct: Features, products, and services -Incorrect: Features, products and services + Correct: Features, products, and services + Incorrect: Features, products and services How to pluralize keywords that are enclosed in @code: -Correct: @code{SELECT}s -Incorrect: @code{SELECTs} or @code{SELECT}'s or @code{SELECT}:s + Correct: @code{SELECT}s + Incorrect: @code{SELECTs} or @code{SELECT}'s or @code{SELECT}:s Use "its" and "it's" correctly. These words are exceptions to the normal use of "'s" to indicate possession: @@ -44,7 +55,9 @@ its = possession (e.g., "MySQL is fast, which is one of its strengths") "a lot" is two words. "alot" is rebarbative. Write lowercase, not lower case + Write uppercase, not upper case + Write lettercase, not letter case Write "web site" (two words), not "website", and "web page" rather @@ -64,12 +77,9 @@ typos. Don't "fix" it. (If the output is produced by a MySQL program, then fix the source for the program to write the output correctly without the typo, then update the manual to match.) -Use "okay" rather than "ok" or "Ok" or "OK" in sentences. -Exceptions: -- When describing instructions for a GUI with buttons that say -"OK", then use "OK". That is, use the label that the GUI uses. -- When showing the output from a program, show the output exactly; -don't change "ok" to "okay", etc. +Use "okay" rather than "ok" or "Ok" or "OK" in sentences. Exceptions: +* When describing instructions for a GUI with buttons that say "OK", then use "OK". That is, use the label that the GUI uses. +* When showing the output from a program, show the output exactly; don't change "ok" to "okay", etc. Write "Open Source" (inside @code{}), not "open source". @@ -87,14 +97,14 @@ For example, use "item" rather than "items", or "person" rather than "people". Sometimes you can add "_list" (as in "item_list") to make it more clear that the name refers to a collection of items. -Some commonly occurring misspelling: + Some commonly occurring misspelling: -Correct Incorrect ---------------------------- -publicly publically -statically staticly -dynamically dynamicly -automatically automaticly + Correct Incorrect + --------------------------- + publicly publically + statically staticly + dynamically dynamicly + automatically automaticly There is no hyphen after "ly" words. Write statically linked, not statically-linked. @@ -102,8 +112,8 @@ statically-linked. To refer to ASCII codes, use ASCII n, not ASCII(n), unless you're referring to the ASCII() function, which case you use @code{ASCII()}. -ASCII 13 indicates ASCII character code 13 -@code{ASCII(13)} indicates a function call + ASCII 13 indicates ASCII character code 13 + @code{ASCII(13)} indicates a function call backup is a noun or adjective (as in "a backup file"), back up is a verb (as in "to back up a database") @@ -118,11 +128,11 @@ Write character set names in @code{}, e.g., @code{latin1}, @code{win1251}. To prevent problems with various output formats, there should be no link titles in a @uref{}. So @uref{url} is allowed, @uref{url,blabla} is not. -Use this format: + Use this format: @uref{url} (WWW) -Not this format: + Not this format: @uref{url, WWW} -Similarly for FTP sites. + Similarly for FTP sites. URLs ending in a domain name or directory should have a "/" at the end. (For example, the URLs for all mirror sites should be written that way.) @@ -188,7 +198,9 @@ Write low-volume (when used as an adjective). Write platform-dependent, not platform dependent. Write something like "mentioned previously" instead of "above", and "later in this section" instead of "below" when making such relative references in your text. + Write "... shown here", not "... shown below". + Write "following some", not "something [shown] below". Write high-priority (when used as an adjective), not high priority. From af8585a42ce8403bb0669f3bff15373231257fb6 Mon Sep 17 00:00:00 2001 From: "akishkin@work.mysql.com" <> Date: Fri, 17 May 2002 07:00:52 +0200 Subject: [PATCH 4/6] compile-pentium-gcov Remove optimization, add innodb and bdb --- BUILD/compile-pentium-gcov | 3 ++- BitKeeper/etc/logging_ok | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/BUILD/compile-pentium-gcov b/BUILD/compile-pentium-gcov index 873d1d0d8e8..05cb0bb0d78 100755 --- a/BUILD/compile-pentium-gcov +++ b/BUILD/compile-pentium-gcov @@ -3,7 +3,8 @@ path=`dirname $0` . "$path/SETUP.sh" -extra_flags="$pentium_cflags -O2 -fprofile-arcs -ftest-coverage" +extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage" extra_configs="$pentium_configs $debug_configs --disable-shared $static_link" +extra_configs="$extra_configs --with-innodb --with-berkeley-db" . "$path/FINISH.sh" diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 6c0a462296e..be08c6d5d51 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -54,3 +54,4 @@ venu@work.mysql.com zak@balfor.local zak@linux.local lenz@mysql.com +akishkin@work.mysql.com From 7586839935d463351ffa2aa907572782e23b8c33 Mon Sep 17 00:00:00 2001 From: "paul@teton.kitebird.com" <> Date: Fri, 17 May 2002 08:29:44 -0500 Subject: [PATCH 5/6] manual.texi Fix typo, semi-redundancy. --- Docs/manual.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Docs/manual.texi b/Docs/manual.texi index 8f781fdda85..e29c2ac1a1e 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -17080,11 +17080,11 @@ MySQL web site (@uref{http://www.mysql.com/Downloads/Contrib/}). Starting from MySQL 4.0.2 one can limit certain resources per user. -So far, the only available method of limiting user usage of MySQL +So far, the only available method of limiting usage of MySQL server resources has been setting the @code{max_user_connections} startup variable to a non-zero value. But this method is strictly global and does not allow for management of individual users, which -could be of paricular interest to Internet Service Providers. +could be of particular interest to Internet Service Providers. Therefore, management of three resources is introduced on the individual user level: From 30a0068096399797a698a555977eee93840705dd Mon Sep 17 00:00:00 2001 From: "Sinisa@sinisa.nasamreza.org" <> Date: Sat, 18 May 2002 14:30:54 +0300 Subject: [PATCH 6/6] Fixing that database privileges are also taken into account. Before this change LOCK TABLES worked only with global and table level privileges. --- sql/sql_parse.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index af68c1bb9f3..3ffc5edc69f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2223,7 +2223,8 @@ mysql_execute_command(void) } if (check_db_used(thd,tables) || end_active_trans(thd)) goto error; - if (grant_option && check_grant(thd,SELECT_ACL | INSERT_ACL | UPDATE_ACL | DELETE_ACL,tables)) + if (check_table_access(thd, SELECT_ACL | INSERT_ACL | UPDATE_ACL | DELETE_ACL , tables) + || (grant_option && check_grant(thd,SELECT_ACL | INSERT_ACL | UPDATE_ACL | DELETE_ACL,tables))) goto error; thd->in_lock_tables=1; thd->options|= OPTION_TABLE_LOCK;