All MySQL clients that communicate with the server using the mysqlclient library use the following environment variables:
Name |
Description |
---|---|
MYSQL_UNIX_PORT |
The default socket; used for connections to localhost |
MYSQL_TCP_PORT |
The default TCP/IP port |
MYSQL_PWD |
The default password |
MYSQL_DEBUG |
Debug-trace options when debugging |
TMPDIR |
The directory where temporary tables/files are created |
Use of MYSQL_PWD is insecure. See Section 4.2.8.
The mysql
client uses the file named in the MYSQL_HISTFILE
environment variable to save the command-line history. The default value for
the history file is $HOME/.mysql_history
, where $HOME is the
value of the HOME environment variable. See Appendix E.
All MySQL programs take many different options. However, every MySQL program provides a --help option that you can use to get a full description of the program’s different options. For example, try mysql --help.
You can override default options for all standard client programs with an option file. See Section 4.1.2.
The following list briefly describes the MySQL programs:
- myisamchk
Utility to describe, check, optimise, and repair MySQL tables. Because myisamchk has many functions, it is described in its own chapter. See Chapter 4.
- make_binary_distribution
Makes a binary release of a compiled MySQL. This could be sent by FTP to
/pub/mysql/Incoming
on support.mysql.com for the convenience of other MySQL users.- msql2mysql
A shell script that converts mSQL programs to MySQL. It doesn’t handle all cases, but it gives a good start when converting.
- mysqlaccess
A script that checks the access privileges for a host, user, and database combination.
- mysqladmin
Utility for performing administrative operations, such as creating or dropping databases, reloading the grant tables, flushing tables to disk, and reopening log files. mysqladmin can also be used to retrieve version, process, and status information from the server. See Section 4.8.3.
- mysqlbug
The MySQL bug report script. This script should always be used when filing a bug report to the MySQL list.
- mysqld
The SQL daemon. This should always be running.
- mysqldump
Dumps a MySQL database into a file as SQL statements or as tab-separated text files. Enhanced freeware originally by Igor Romanenko. See Section 4.8.5.
- mysqlimport
Imports text files into their respective tables using LOAD DATA INFILE. See Section 4.8.7.
- mysqlshow
Displays information about databases, tables, columns, and indexes.
- mysql_install_db
Creates the MySQL grant tables with default privileges. This is usually executed only once, when first installing MySQL on a system.
- replace
A utility program that is used by msql2mysql, but that has more general applicability as well. replace changes strings in place in files or on the standard input. Uses a finite state machine to match longer strings first. Can be used to swap strings. For example, this command swaps a and b in the given files:
shell> replace a b b a—file1 file2 ...
mysql is a simple SQL shell (with GNU readline capabilities). It supports interactive and non-interactive use. When used interactively, query results are presented in an ASCII-table format. When used non-interactively (for example, as a filter), the result is presented in tab-separated format. (The output format can be changed using command-line options.) You can run scripts simply like this:
shell> mysql database < script.sql > output.tab
If you have problems due to insufficient memory in the client, use the --quick option! This forces mysql to use mysql_use_result( ) rather than mysql_store_result( ) to retrieve the result set.
Using mysql is very easy. Just start it as follows:
mysql database or mysql --user=user_name --password=your_password database. Type a SQL statement, end it with ;
, \g
, or \G
,
and press Enter.
mysql supports the following options:
- -?, --help
Display this help and exit.
- -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.
- -B, --batch
Print results with a tab as separator, each row on a new line. Doesn’t use history file.
- --character-sets-dir=...
Directory where character sets are located.
- -C, --compress
Use compression in server/client protocol.
- -#, --debug[=...]
Debug log. Default is ‘d:t:o,/tmp/mysql.trace’.
- -D, --database=...
Database to use. This is mainly useful in the
my.cnf
file.- --default-character-set=...
Set the default character set.
- -e, --execute=...
Execute command and quit. (Output like with --batch.)
- -E, --vertical
Print the output of a query (rows) vertically. Without this option you can also force this output by ending your statements with \G.
- -f, --force
Continue even in case of a 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! With the -g option, long-format commands will still work from the first line, however.- -G, --enable-named-commands
Named commands are enabled. Long-format commands are allowed as well as shortened \* commands.
- -i, --ignore-space
Ignore space after function names.
- -h, --host=...
Connect to the given host.
- -H, --html
Produce HTML output.
- -L, --skip-line-numbers
Don’t write line number for errors. Useful when one wants to compare result files that include error messages.
- --no-pager
Disable pager and print to stdout. See interactive help (\h) also.
- --no-tee
Disable outfile. See interactive help (\h) also.
- -n, --unbuffered
Flush buffer after each query.
- -N, --skip-column-names
Don’t write column names in results.
- -O, --set-variable var=option
Give a variable a value. --help lists variables.
- -o, --one-database
Only update the default database. This is useful for skipping updates to other databases in the update log.
- --pager[=...]
Output type. Default is your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\h) also. This option does not work in batch mode. Pager works only in Unix.
- -p[password], --password[=...]
Password to use when connecting to the server. If a password is not given on the command-line, you will be prompted for it. Note that if you use the short form -p you can’t have a space between the option and the password.
- -P --port=...
TCP/IP port number to use for connection.
- -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 column values without escape conversion. Used with --batch.
- -s, --silent
Be more silent.
- -S --socket=...
Socket file to use for connection.
- -t --table
Output in table format. This is default in non-batch mode.
- -T, --debug-info
Print some debug information at exit.
- --tee=...
Append everything into outfile. See interactive help (\h) also. Does not work in batch mode.
- -u, --user=#
User for login if not current user.
- -U, --safe-updates[=#], --i-am-a-dummy[=#]
Only allow UPDATE and DELETE that uses keys. More information about this option is provided later in this section. You can reset this option if you have it in your
my.cnf
file by using --safe-updates=0.- -v, --verbose
More verbose output (-v -v -v gives the table output format).
- -V, --version
Output version information and exit.
- -w, --wait
Wait and retry if connection is down instead of aborting.
You can also set the following variables with -O or --set-variable:
Variable Name |
Default |
Description |
---|---|---|
connect_timeout |
0 |
Number of seconds before timeout connection. |
max_allowed_packet |
16777216 |
Max packet length to send/receive from to server. |
net_buffer_length |
16384 |
Buffer for TCP/IP and socket communication. |
select_limit |
1000 |
Automatic limit for SELECT when using --i-am-a-dummy. |
max_join_size |
1000000 |
Automatic limit for rows in a join when using --i-am-a-dummy. |
If you type ‘help’ on the command-line, mysql will print out the commands that it supports:
mysql> help MySQL commands: help (\h) Display this text. ? (\h) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute a SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument.
The pager command works only in Unix.
The status command gives you some information about the connection and the server you are using. If you are running in the --safe-updates mode, status will also print the values for the mysql variables that affect your queries.
A useful startup option for beginners (introduced in MySQL Version 3.23.11) is --safe-updates (or --i-am-a-dummy for users that have at some time done a DELETE FROM table_name but forgot the WHERE clause). When using this option, mysql sends the following command to the MySQL server when opening the connection:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#, SQL_MAX_JOIN_SIZE=#max_join_size#"
where #select_limit# and #max_join_size# are variables that can be set from the mysql command-line. See Section 5.5.6.
This results in the following:
You are not allowed to do an UPDATE or DELETE statement if you don’t have a key constraint in the WHERE part. One can, however, force an UPDATE/DELETE by using LIMIT:
UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
All big results are automatically limited to #select_limit# rows.
SELECT’s that will probably need to examine more than #max_join_size row combinations will be aborted.
Some useful hints about the mysql client:
Some data is much more readable when displayed vertically, instead of the usual horizontal box-type output. For example, longer text, which includes new lines, is often much easier to read with vertical output.
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 lIMIT 300,1\G *************************** 1. row *************************** msg_nro: 3068 date: 2000-03-01 23:29:50 time_zone: +0200 mail_from: Monty reply: monty@no.spam.com mail_to: "Thimble Smith" <tim@no.spam.com> sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes: Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8 Thimble> or Unicode? Otherwise, I'll put this on my TODO list and see what Thimble> happens. Yes, please do that. Regards, Monty file: inbox-jani-1 hash: 190402944 1 row in set (0.09 sec)
For logging, you can use the tee option. The tee can be started with option --tee=..., or from the command-line interactively with command tee. All the data displayed on the screen will also be appended into a given file. This can be very useful for debugging purposes also. The tee can be disabled from the command-line with command notee. Executing tee again starts logging again. Without a parameter the previous file will be used. Note that tee will flush the results into the file after each command, just before the command-line appears again waiting for the next command.
Browsing, or searching the results in interactive mode in Unix less, more, or any other similar program, is now possible with option --pager[=...]. Without this argument, mysql client will look for the environment variable PAGER and set pager to that. pager can be started from the interactive command-line with command pager and disabled with command nopager. The command takes an argument optionally and the pager will be set to that. Command pager can be called without an argument, but this requires that the option --pager was used, or the pager will default to stdout. pager works only in Unix, since it uses the popen( ) function, which doesn’t exist in Windows. In Windows, the tee option can be used instead, although it may not be as handy as pager can be in some situations.
Here are a few tips about pager: you can use it to write to a file:
mysql> pager cat > /tmp/log.txt
and the results will only go to a file. You can also pass any options for the programs that you want to use with the pager:
mysql> pager less -n -i -S
Note the option '-S’. You may find it very useful when browsing the results; try the option with horizontal output (end commands with '\g’ or ';') and with vertical output (end commands with '\G'). Sometimes a very wide result set is hard to read from the screen. With option -S set to less you can browse the results within the interactive less from left to right, preventing lines longer than your screen from being continued to the next line. This can make the result set much more readable. You can switch the mode between on and off within the interactive less with '-S’. See the ‘h’ for more help about less.
Last (unless you already understood this from the previous examples) you can combine very complex methods to handle the results—for example, the following would send the results to two files in two different directories, on two different hard disks mounted on /dr1 and /dr2, yet let the results still be seen on the screen via less:
mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | less -n -i -S
You can also combine these two functions; have the tee enabled and set the pager to ‘less', and you will be able to browse the results in Unix ‘less’ and still have everything appended into a file the same time. The difference between Unix tee used with the pager and the mysql client built-in tee is that the built-in tee works even if you don’t have the Unix tee available. The built-in tee also logs everything that is printed on the screen, where the Unix tee used with pager doesn’t log quite that much. Last, but not least, the interactive tee is easier to switch on and off, when you want to log something into a file but want to be able to turn the feature off sometimes.
This is a utility for performing administrative operations. The syntax is:
shell> mysqladmin [OPTIONS] command [command-option] command ...
You can get a list of the options your version of mysqladmin supports by executing mysqladmin --help.
The current mysqladmin supports the following commands:
- create databasename
Create a new database.
- drop databasename
Delete a database and all its tables.
- extended-status
Gives an extended status message from the server.
- flush-hosts
Flush all cached hosts.
- flush-logs
Flush all logs.
- flush-tables
Flush all tables.
- flush-privileges
Reload grant tables (same as reload).
- kill id,id,...
Kill mysql threads.
- password
Set a new password. Change old password to new-password.
- ping
Check if mysqld is alive.
- processlist
Show list of active threads in server.
- reload
Reload grant tables.
- refresh
Flush all tables and close and open log files.
- shutdown
Take server down.
- slave-start
Start slave replication thread.
- slave-stop
Stop slave replication thread.
- status
Gives a short status message from the server.
- variables
Prints variables available.
- version
Get version info from server.
All commands can be shortened to their unique prefix. For example:
shell> mysqladmin proc stat +----+-------+-----------+----+-------------+------+-------+------+ | Id | User | Host | db | Command | Time | State | Info | +----+-------+-----------+----+-------------+------+-------+------+ | 6 | monty | localhost | | Processlist | 0 | | | +----+-------+-----------+----+-------------+------+-------+------+ Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 2 Memory in use: 1092K Max memory used: 1116K
The mysqladmin status command result has the following columns:
Column |
Description |
---|---|
Uptime | |
Threads | |
Questions | |
Slow queries |
Queries that have taken more than long_query_time seconds. See Section 4.9.5. |
Opens | |
Flush tables | |
Open tables | |
Memory in use |
Memory allocated directly by the mysqld code (only available when MySQL is compiled with --with-debug=full). |
Max memory used |
Maximum memory allocated directly by the mysqld code (only available when MySQL is compiled with --with-debug=full). |
If you do myslqadmin shutdown on a socket (in other words, on the computer where mysqld is running), mysqladmin will wait until the MySQL pid-file is removed to ensure that the mysqld server has stopped properly.
Since MySQL Version 3.23.38 you can use a new checking and repairing tool for MyISAM tables. The difference between this tool and myisamchk is that mysqlcheck should be used when the mysqld server is running, where as myisamchk should be used when it is not. The benefit is that you no longer have to take the server down for checking or repairing your tables.
mysqlcheck uses MySQL server commands CHECK, REPAIR, ANALYZE, and OPTIMIZE in a convenient way for the user.
There are three alternative ways to invoke mysqlcheck:
shell> mysqlcheck [OPTIONS] database [tables] shell> mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...] shell> mysqlcheck [OPTIONS] --all-databases
In this way, mysqlcheck can be used in a similar way as mysqldump when it comes to what databases and tables you want to choose.
mysqlcheck does have a special feature compared to the other clients; the default behavior, checking tables (-c), can be changed by renaming the binary. So if you want to have a tool that repairs tables by default, you should just copy mysqlcheck to your hard drive with a new name, mysqlrepair, or alternatively make a symbolic link to mysqlrepair and name the symbolic link mysqlrepair. If you invoke mysqlrepair now, it will repair tables by default.
The names that you can use to change mysqlcheck default behavior are as follows:
mysqlrepair: The default option will be -r mysqlanalyze: The default option will be -a mysqloptimize: The default option will be -o
The options available for mysqlcheck are listed here. Please check what your version supports with mysqlcheck --help.
- -A, --all-databases
Check all the databases. This will be the same as --databases with all databases selected.
- -1, --all-in-1
Instead of making one query for each table, execute all queries in 1 query separately for each database. Table names will be in a comma-separated list.
- -a, --analyze
Analyse given tables.
- --auto-repair
If a checked table is corrupted, automatically fix it. Repairing will be done after all tables have been checked, if corrupted ones were found.
- -#, --debug=...
Output debug log. Often this is ‘d:t:o,filename’.
- --character-sets-dir=...
Directory where character sets are located.
- -c, --check
Check table for errors.
- -C, --check-only-changed
Check only tables that have changed since last check or haven’t been closed properly.
- --compress
Use compression in server/client protocol.
- -?, --help
Display this help message and exit.
- -B, --databases
To check several databases. Note the difference in usage; in this case no tables are given. All name arguments are regarded as database names.
- --default-character-set=...
Set the default character set.
- -F, --fast
Check only tables that haven’t been closed properly.
- -f, --force
Continue even if we get an sql-error.
- -e, --extended
If you are using this option with CHECK TABLE, it will ensure that the table is 100% consistent, but will take a long time.
If you are using this option with REPAIR TABLE, it will run an extended repair on the table, which may not only take a long time to execute, but may also produce a lot of garbage rows!
- -h, --host=...
Connect to host.
- -m, --medium-check
Faster than extended-check, but only finds 99.99% of all errors. Should be good enough for most cases.
- -o, --optimize
Optimise tables.
- -p, --password[=...]
Password to use when connecting to server. If password is not given it’s solicited on the tty.
- -P, --port=...
Port number to use for connection.
- -q, --quick
If you are using this option with CHECK TABLE, it prevents the check from scanning the rows to check for wrong links. This is the fastest check.
If you are using this option with REPAIR TABLE, it will try to repair only the index tree. This is the fastest repair method for a table.
- -r, --repair
Can fix almost anything except unique keys that aren’t reallyunique.
- -s, --silent
Print only error messages.
- -S, --socket=...
Socket file to use for connection.
- --tables
Overrides option --databases (-B).
- -u, --user=#
User for login if not current user.
- -v, --verbose
Print info about the various stages.
- -V, --version
Output version information and exit.
mysqldump is a utility to dump a database or a collection of databases for backup or for transferring the data to another SQL server (not necessarily a MySQL server). The dump will contain SQL statements to create the table and/or populate the table.
If you are doing a backup on the server, you should consider using the mysqlhotcopy instead. See Section 4.8.6.
shell> mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS]
If you don’t give any tables or use the --databases or --all-databases, the whole database(s) will be dumped.
You can get a list of the options your version of mysqldump supports by executing mysqldump --help.
Note that if you run mysqldump without --quick or --opt, mysqldump will load the whole result set into memory before dumping the result. This will probably be a problem if you are dumping a big database.
Note that if you are using a new copy of the mysqldump program and you are going to do a dump that will be read into a very old MySQL server, you should not use the --opt or -e options.
mysqldump supports the following options:
- --add-locks
Add LOCK TABLES before and UNLOCK TABLES after each table dump (to get faster inserts into MySQL).
- --add-drop-table
Add a drop table before each create statement.
- -A, --all-databases
Dump all the databases. This will be the same as --databases with all databases selected.
- -a, --all
Include all MySQL-specific create options.
- --allow-keywords
Allows creation of column names that are keywords. This works by prefixing each column name with the table name.
- -c, --complete-insert
Use complete insert statements (with column names).
- -C, --compress
Compress all information between the client and the server if both support compression.
- -B, --databases
To dump several databases. Note the difference in usage. In this case no tables are given. All name arguments are regarded as database names. USE db_name; will be included in the output before each new database.
- --delayed
Insert rows with the INSERT DELAYED command.
- -e, --extended-insert
Use the new multi-line INSERT syntax. (Gives more compact and faster insert statements.)
- -#, --debug[=option_string]
Trace usage of the program (for debugging).
- --help
Display a help message and exit.
- --fields-terminated-by=... , --fields-enclosed-by=... , --fields-optionally-enclosed-by=... , --fields-escaped-by=... , --lines-terminated-by=...
These options are used with the -T option and have the same meaning as the corresponding clauses for LOAD DATA INFILE. See Section 6.4.9.
- -F, --flush-logs
Flush log file in the MySQL server before starting the dump.
- -f, --force,
Continue even in case of a SQL error during a table dump.
- -h, --host=..
Dump data from the MySQL server on the named host. The default host is localhost.
- -l, --lock-tables
Lock all tables before starting the dump. The tables are locked with READ LOCAL to allow concurrent inserts in the case of MyISAM tables.
- -K, --disable-keys
/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and /*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output.
- -n, --no-create-db
CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; will not be put in the output. This line will be added otherwise, if --databases or --all-databases option were given.
- -t, --no-create-info
Don’t write table creation information (the CREATE TABLE statement).
- -d, --no-data
Don’t write any row information for the table. This is very useful if you just want to get a dump of the structure for a table!
- --opt
Same as --quick --add-drop-table --add-locks --extended-insert --lock-tables. Should give you the fastest possible dump for reading into a MySQL server.
- -pyour_pass, --password[=your_pass]
The password to use when connecting to the server. If you specify no
=your_pass
part, mysqldump you will be prompted for a password.- -P port_num, --port=port_num
The TCP/IP port number to use for connecting to a host. (This is used for connections to hosts other than localhost, for which Unix sockets are used.)
- -q, --quick
Don’t buffer query, dump directly to stdout. Uses mysql_use_result( ) to do this.
- -r, --result-file=...
Direct output to a given file. This option should be used in MS-DOS because it prevents new line '\n’ from being converted to '\n\r’ (new line + carriage return).
- -S /path/to/socket, --socket=/path/to/socket
The socket file to use when connecting to localhost (which is the default host).
- --tables
Overrides option --databases (-B).
- -T, --tab=path-to-some-directory
Creates a table_name.sql file that contains the SQL CREATE commands, and a table_name.txt file that contains the data, for each give table. Note: This only works if mysqldump is run on the same machine as the mysqld daemon. The format of the
.txt
file is made according to the --fields-xxx and --lines--xxx options.- -u user_name, --user=user_name
The MySQL username to use when connecting to the server. The default value is your Unix login name.
- -O var=option, --set-variable var=option
Set the value of a variable. The possible variables are listed below.
- -v, --verbose
Verbose mode. Print out more information on what the program does.
- -V, --version
Print version information and exit.
- -w, --where='where-condition'
Dump only selected records. Note that quotes are mandatory.
- -X, --xml
Dumps a database as well-formed XML.
- -x, --first-slave
Locks all tables across all databases.
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
- -O net_buffer_length=#, where # < 16M
When creating multi-row-insert statements (as with option --extended-insert or --opt), mysqldump will create rows up to net_buffer_length length. If you increase this variable, you should also ensure that the max_allowed_packet variable in the MySQL server is bigger than the net_buffer_length.
The most normal use of mysqldump is probably for making a backup of whole databases. See Section 4.4.1.
mysqldump --opt database > backup-file.sql
You can read this back into MySQL with:
mysql database < backup-file.sql
or
mysql -e "source /patch-to-backup/backup-file.sql" database
However, it’s also very useful to populate another MySQL server with information from a database:
mysqldump --opt database | mysql ---host=remote-host -C database
It is possible to dump several databases with one command:
mysqldump --databases database1 [database2 ...] > my_databases.sql
If all the databases are wanted, one can use:
mysqldump --all-databases > all_databases.sql
mysqlhotcopy is a Perl script that uses LOCK TABLES, FLUSH TABLES, and cp or scp to quickly make a backup of a database. It’s the fastest way to make a backup of a database of single tables, but it can only be run on the same machine where the database directories are.
mysqlhotcopy db_name [/path/to/new_directory] mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory mysqlhotcopy db_name./regex/
mysqlhotcopy supports the following options:
- -?, --help
Display a help screen and exit.
- -u, --user=#
User for database login.
- -p, --password=#
Password to use when connecting to server.
- -P, --port=#
Port to use when connecting to local server.
- -S, --socket=#
Socket to use when connecting to local server.
- --allowold
Don’t abort if target already exists (rename it _old).
- --keepold
Don’t delete previous (now renamed) target when done.
- --noindices
Don’t include full index files in copy to make the backup smaller and faster. The indexes can later be reconstructed with myisamchk -rq.
- --method=#
Method for copy (cp or scp).
- -q, --quiet
Be silent except for errors.
- --debug
Enable debug.
- -n, --dryrun
Report actions without doing them.
- --regexp=#
Copy all databases with names matching regexp.
- --suffix=#
Suffix for names of copied databases.
- --checkpoint=#
Insert checkpoint entry into specified db.table.
- --flushlog
Flush logs once all tables are locked.
- --tmpdir=#
Temporary directory (instead of /tmp).
You can use perldoc mysqlhotcopy to get ore complete documentation for mysqlhotcopy.
mysqlhotcopy reads the groups [client] and [mysqlhotcopy] from the option files.
To be able to execute mysqlhotcopy you need write access to the backup directory, the select privilege for the tables you are about to copy, and the MySQL reload privilege (to be able to execute FLUSH TABLES).
mysqlimport provides a command-line interface to the LOAD DATA INFILE SQL statement. Most options to mysqlimport correspond directly to the same options to LOAD DATA INFILE. See Section 6.4.9.
mysqlimport is invoked like this:
shell> mysqlimport [options] database textfile1 [textfile2 ...]
For each text file named on the command-line,
mysqlimport strips any extension from the filename and uses the result
to determine which table to import the file’s contents into. For example,
files named patient.txt
, patient.text
, and patient
would
all be imported into a table named patient.
mysqlimport supports the following options:
- -c, --columns=...
This option takes a comma-separated list of field names as an argument. The field list is used to create a proper LOAD DATA INFILE command, which is then passed to MySQL. See Section 6.4.9.
- -C, --compress
Compress all information between the client and the server if both support compression.
- -#, --debug[=option_string]
Trace usage of the program (for debugging).
- -d, --delete
Empty the table before importing the text file.
- --fields-terminated-by=... , --fields-enclosed-by=... , --fields-optionally-enclosed-by=... , --fields-escaped-by=... , --lines-terminated-by=...
These options have the same meaning as the corresponding clauses for LOAD DATA INFILE. See Section 6.4.9.
- -f, --force
Ignore errors. For example, if a table for a text file doesn’t exist, continue processing any remaining files. Without --force, mysqlimport exits if a table doesn’t exist.
- --help
Display a help message and exit.
- -h host_name, --host=host_name
Import data to the MySQL server on the named host. The default host is localhost.
- -i, --ignore
See the description for the --replace option.
- -l, --lock-tables
Lock all tables for writing before processing any text files. This ensures that all tables are synchronised on the server.
- -L, --local
Read input files from the client. By default, text files are assumed to be on the server if you connect to localhost (which is the default host).
- -pyour_pass, --password[=your_pass]
The password to use when connecting to the server. If you specify no
=your_pass
part, mysqlimport you will be prompted for a password.- -P port_num, --port=port_num
The TCP/IP port number to use for connecting to a host. (This is used for connections to hosts other than localhost, for which Unix sockets are used.)
- -r, --replace
The --replace and --ignore options control handling of input records that duplicate existing records on unique key values. If you specify --replace, new rows replace existing rows that have the same unique key value. If you specify --ignore, input rows that duplicate an existing row on a unique key value are skipped. If you don’t specify either option, an error occurs when a duplicate key value is found, and the rest of the text file is ignored.
- -s, --silent
Silent mode. Write output only when errors occur.
- -S /path/to/socket, --socket=/path/to/socket
The socket file to use when connecting to localhost (which is the default host).
- -u user_name, --user=user_name
The MySQL username to use when connecting to the server. The default value is your Unix login name.
- -v, --verbose
Verbose mode. Print out more information regarding what the program does.
- -V, --version
Print version information and exit.
Here is a sample run using mysqlimport:
$ mysql --version mysql Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686) $ uname -a Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown $ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test $ ed a 100 Max Sydow 101 Count Dracula . w imptest.txt 32 q $ od -c imptest.txt 0000000 1 0 0 \t M a x S y d o w \n 1 0 0000020 1 \t C o u n t D r a c u l a \n 0000040 $ mysqlimport --local test imptest.txt test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 $ mysql -e 'SELECT * FROM imptest' test +------+---------------+ | id | n | +------+---------------+ | 100 | Max Sydow | | 101 | Count Dracula | +------+---------------+
mysqlshow can be used to quickly look at which databases exist, their tables, and the tables’ columns.
With the mysql program you can get the same information with the SHOW commands. See Section 4.5.6.
mysqlshow is invoked like this:
shell> mysqlshow [OPTIONS] [database [table [column]]]
If no database is given, all matching databases are shown.
If no table is given, all matching tables in the database are shown.
If no column is given, all matching columns and column types in the table are shown.
Note that in newer MySQL versions, you only see those databases/tables/columns for which you have some privileges.
If the last argument contains a shell or SQL wildcard (*, ?, % or _), only what’s matched by the wildcard is shown. This may cause some confusion when you try to display the columns for a table with a _, as in this case mysqlshow only shows you the table names that match the pattern. This is easily fixed by adding an extra % last on the command-line (as a separate argument).
For most system errors MySQL will, in addition to an internal text message, also print the system error code in one of the following styles: message ... (errno: #) or message ... (Errcode: #).
You can find out what the error code means by either examining the documentation for your system or using the perror utility.
perror prints a description for a system error code, or a MyISAM/ISAM table handler error code.
perror is invoked like this:
shell> perror [OPTIONS] [ERRORCODE [ERRORCODE...]] Example: shell> perror 13 64 Error code 13: Permission denied Error code 64: Machine is not on the network
Note that the error messages are mostly system-dependent!
The mysql client typically is used interactively, like this:
shell> mysql database
However, it’s also possible to put your SQL commands in a file and tell
mysql to read its input from that file. To do so, create a text
file text_file
that contains the commands you wish to execute.
Then invoke mysql as shown here:
shell> mysql database < text_file
You can also start your text file with a USE db_name statement. In this case, it is unnecessary to specify the database name on the command line:
shell> mysql < text_file
If you are already running mysql, you can execute a SQL script file using the source command:
mysql> source filename;
For more information about batch mode, see Section 3.6.
Get MySQL Reference Manual now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.