There is a quick way to type both MySQL database and table names quickly by enabling MySQL auto completion feature. This is called automatic rehashing. This option is on by default, which enables table and column name completion.
First connect to mysql database called foo:
$ mysql -u vivek -p foo
Now let us say you would like to list all records from tables wp_users. Type select * from w and press tab key to complete table name:
mysql> select * from w {Press TAB KEY}
Please note that if the partial name is unique, mysql will completes it for you. Otherwise, you can hit tab key again to see all possible matches.
Auto-completion enables you to cut down typing time and great way to speed up your work :)
If you don't use this feature, disable this feature by passing -A or --skip-auto-rehash option to mysql. That causes mysql to start faster.
$ mysql -A -u vivek -p foo
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop













{ 10 comments… read them below or add one }
Great tip! You do have to have done a “use database” at least once before in your session, because that’s when it loads all that information in. Also, does that trick work on Unix only or on Windows too? (Mac OS X = Unix)
Hmm..
mysql -u vivek -p foo
foo is database name; so no need to use database name again (foo is not my password) :). Otherwise execute use database as suggested by you.
I have not tested this on Microsoft Windows. But it should work as this is mysql client feature.
Appreciate your post.
This doesn’t appear to work on Windows with cmd.exe. Does anyone know if it’s possible to get mysql tab-completion working with cmd.exe? If it is, then any additional guidance on how to get it set up would be great.
can be possible autocomplete sql command?!
for example: select, from, having and so way?
thanks a lot
bye
hi,
i reached here searching how to enable the feature, as you said in this post: http://nixcraft.com/databases-servers/793-tab-completion-mysql-client.html
however, you only say here that it’s enabled by default, and how to disable it.
i have an installation where it seems to be disabled (compiled mysql5 on a debian etch system), and i was hoping to find a way to enable it. there is another mysql installation (version 4) on the same machine that has tab completion.
use “\#” on mysql prompt
Someone have experienced problems with this feature in putty (in my case, auto-completion does not work!)?
Thanks in advance.
The underlying feature in MySQL is called rehashing. There are a number of command line flags (and associated options in my.cnf) to enable, disable or skip this. See this for more information.
Tip: If it’s not working, issue the ‘rehash’ command from the MySQL command line interface.
@John Ortiz
Yes dude i have same problem too.
Jos Visser
Thanks a lot.
After issusing rehash it worked!