The problems involved here are also my daily confusions. Now let's make a summary. It mainly describes two problems:
1. MySQL parameter features;
2. MySQL parameter settings;
We all know that there are many options under the command line, and these options will be followed by a bar, that is, "-"; two bars, that is "--", are there any macro rules for such complicated and complicated options? Others do not know. There are no more than 20 MySQL options. The following describes the MySQL parameters obtained by using the command: MySQL -- help:
mysql Ver 14.12 Distrib 5.0.22, for Win32 (ia32)Copyright (C) 2002 MySQL ABThis software comes with ABSOLUTELY NO WARRANTY. This is free software,and you are welcome to modify and redistribute it under the GPL licenseUsage: mysql [OPTIONS] [database] -?, --help Display this help and exit. -I, --help Synonym for -? --auto-rehash Enable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time. Disable with --disable-auto-rehash. -A, --no-auto-rehash No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of mysql and disables rehashing on reconnect. WARNING: options deprecated; use --disable-auto-rehash instead. -B, --batch Don't use history file. Disable interactive behavior. (Enables --silent) --character-sets-dir=name Directory where character sets are. --default-character-set=name Set the default character set. -C, --compress Use compression in server/client protocol. -#, --debug[=#] This is a non-debug version. Catch this and exit -D, --database=name Database to use. --delimiter=name Delimiter to be used. -e, --execute=name Execute command and quit. (Disables --force and history file) -E, --vertical Print the output of a query (rows) vertically. -f, --force Continue even if we get an sql error. -g, --no-named-commands Named commands are disabled. Use \* form only, or use named commands only in the beginning of a line ending with a semicolon (;) Since version 10.9 the client now starts with this option ENABLED by default! Disable with '-G'. Long format commands still work from the first line. WARNING: option deprecated; use --disable-named-commands instead. -G, --named-commands Enable named commands. Named commands mean this program's internal commands; see mysql> help . When enabled, the named commands can be used from any line of the query, otherwise only from the first line, before an enter. Disable with --disable-named-commands. This option is disabled by default. -i, --ignore-spaces Ignore space after function names. --local-infile Enable/disable LOAD DATA LOCAL INFILE. -b, --no-beep Turn off beep on error. -h, --host=name Connect to host. -H, --html Produce HTML output. -X, --xml Produce XML output --line-numbers Write line numbers for errors. -L, --skip-line-numbers Don't write line number for errors. WARNING: -L is deprecated, use long version of this option instead. --no-tee Disable outfile. See interactive help (\h) also. WARNING: option deprecated; use --disable-tee instead -n, --unbuffered Flush buffer after each query. --column-names Write column names in results. -N, --skip-column-names Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead. -O, --set-variable=name Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value. --sigint-ignore Ignore SIGINT (CTRL-C) -o, --one-database Only update the default database. This is useful for skipping updates to other database in the update log. -p, --password[=name] Password to use when connecting to server. If password is not given it's asked from the tty. -W, --pipe Use named pipes to connect to server. -P, --port=# Port number to use for connection. --prompt=name Set the mysql prompt to this value. --protocol=name The protocol of connection (tcp,socket,pipe,memory). -q, --quick Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file. -r, --raw Write fields without conversion. Used with --batch. --reconnect Reconnect if the connection is lost. Disable with --disable-reconnect. This option is enabled by default. -s, --silent Be more silent. Print results with a tab as separator, each row on new line. --shared-memory-base-name=name Base name of shared memory. -S, --socket=name Socket file to use for connection. --ssl Enable SSL for connection (automatically enabled with other flags). Disable with --skip-ssl. --ssl-key=name X509 key in PEM format (implies --ssl). --ssl-cert=name X509 cert in PEM format (implies --ssl). --ssl-ca=name CA file in PEM format (check OpenSSL docs, implies --ssl). --ssl-capath=name CA directory (check OpenSSL docs, implies --ssl). --ssl-cipher=name SSL cipher to use (implies --ssl). -t, --table Output in table format. -T, --debug-info Print some debug info at exit. --tee=name Append everything into outfile. See interactive help (\h) also. Does not work in batch mode. -u, --user=name User for login if not current user. -U, --safe-updates Only allow UPDATE and DELETE that uses keys. -U, --i-am-a-dummy Synonym for option --safe-updates, -U. -v, --verbose Write more. (-v -v -v gives the table output format). -V, --version Output version information and exit. -w, --wait Wait and retry if connection is down. --connect_timeout=# Number of seconds before connection timeout. --max_allowed_packet=# Max packet length to send to, or receive from server --net_buffer_length=# Buffer for TCP/IP and socket communication --select_limit=# Automatic limit for SELECT when using --safe-updates --max_join_size=# Automatic limit for rows in a join when using --safe-updates --secure-auth Refuse client connecting to server if it uses old (pre-4.1.1) protocol --show-warnings Show warnings after every statement.Default options are read from the following files in the given order:C:\my.ini C:\my.cnf C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\Program Files\MySQL\MySQL Server 5.0\my.ini C:\Program Files\MySQL\MySQL Server 5.0\my.cnf The following groups are read: mysql clientThe following options may be given as the first argument:--print-defaultsPrint the program argument list and exit--no-defaultsDon't read default options from any options file--defaults-file=#Only read default options from the given file #--defaults-extra-file=# Read this file after the global files are readVariables (--variable-name=value)and boolean options {FALSE|TRUE} Value (after reading options)--------------------------------- -----------------------------auto-rehash TRUEcharacter-sets-dir (No default value)default-character-set latin1compress FALSEdatabase (No default value)delimiter ;vertical FALSEforce FALSEnamed-commands FALSElocal-infile FALSEno-beep FALSEhost (No default value)html FALSExml FALSEline-numbers TRUEunbuffered FALSEcolumn-names TRUEsigint-ignore FALSEport 3306prompt \u@\h:\d\r:\m:\s>quick FALSEraw FALSEreconnect TRUEshared-memory-base-name (No default value)socket (No default value)ssl FALSEssl-key (No default value)ssl-cert (No default value)ssl-ca (No default value)ssl-capath (No default value)ssl-cipher (No default value)table FALSEdebug-info FALSEuser (No default value)safe-updates FALSEi-am-a-dummy FALSEconnect_timeout 0max_allowed_packet 16777216net_buffer_length 16384select_limit 1000max_join_size 1000000secure-auth FALSEshow-warnings TRUE
See it. It's very complicated. Let's take a look at the output in detail! They have the following rules:
1. "-" number: There are two "--" parameters in front, and two "--" and "--" in front of the same parameter. For example:
-- Secure-auth only has "--", while-U and -- user = Name have two;
2. "equal sign of a parameter": There are two possible conditions: equal sign and no equal sign;
A. "features on the right of the equal sign": "= Name" and "[= #]". Of course, there is also a non-equal sign;
After summing up the above three rules, we can draw the following conclusions:
1. when the same parameter has both-"and" -- ", for example,-u, -- user = Name, this indicates that this parameter can be set either in the command line or in the configuration file. The method set in the command line is-uusername, Which is set in the configuration file, add a line under the mysqld segment: User = "user" (why do we need to add double quotation marks here ?); You can set any other parameter with this feature;
2. the name on the right of the equal sign indicates that the value on the right is a string, which means that we need to add double quotation marks. When it is [= #], it indicates that the value on the right should be a number; if there is no equal sign, its value should be true or false. The default value is false;
The above conclusion is not a random one. You can actually test it. here we can use the MySQL -- Help Command output to verify it:
We will see the output of MySQL -- help posted above. Copy the second half of it here:
Variables (--variable-name=value)and boolean options {FALSE|TRUE} Value (after reading options)--------------------------------- -----------------------------auto-rehash TRUEcharacter-sets-dir (No default value)default-character-set latin1compress FALSEdatabase (No default value)delimiter ;vertical FALSEforce FALSEnamed-commands FALSElocal-infile FALSEno-beep FALSEhost (No default value)html FALSExml FALSEline-numbers TRUEunbuffered FALSEcolumn-names TRUEsigint-ignore FALSEport 3306prompt \u@\h:\d\r:\m:\s>quick FALSEraw FALSEreconnect TRUEshared-memory-base-name (No default value)socket (No default value)ssl FALSEssl-key (No default value)ssl-cert (No default value)ssl-ca (No default value)ssl-capath (No default value)ssl-cipher (No default value)table FALSEdebug-info FALSEuser (No default value)safe-updates FALSEi-am-a-dummy FALSEconnect_timeout 0max_allowed_packet 16777216net_buffer_length 16384select_limit 1000max_join_size 1000000secure-auth FALSEshow-warnings TRUE
In the above two columns, the left column is the configurable parameter, and the right column is its current value. The analysis shows that the two conclusions above are correct. You can set it in the command line or configuration file according to the above conclusion, and then use MySQL -- help to output the above information to see the effect, there will be no error.
With the above guidelines as a guide, I believe that the configuration of MySQL parameters has more directionality, and no direction is terrible. This article expresses some jumps and requires you to have a certain understanding of MySQL.