mysql_config provides you with useful information for compiling your MySQL client and connecting it to MySQL.
mysql_config supports the following options:
--cflags
Compiler flags to find include files and critical
compiler flags and defines used when compiling the
libmysqlclient library.
--include
Compiler options to find MySQL include files. (Note that
normally you would use --cflags instead
of this option.)
--libmysqld-libs,
--embedded
Libraries and options required to link with the MySQL embedded server.
--libs
Libraries and options required to link with the MySQL client library.
--libs_r
Libraries and options required to link with the thread-safe MySQL client library.
--port
The default TCP/IP port number, defined when configuring MySQL.
--socket
The default Unix socket file, defined when configuring MySQL.
--version
Version number for the MySQL distribution.
If you invoke mysql_config with no options, it displays a list of all options that it supports, and their values:
shell> mysql_config
Usage: /usr/local/mysql/bin/mysql_config [options]
Options:
--cflags [-I/usr/local/mysql/include/mysql -mcpu=pentiumpro]
--include [-I/usr/local/mysql/include/mysql]
--libs [-L/usr/local/mysql/lib/mysql -lmysqlclient -lz
-lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto]
--libs_r [-L/usr/local/mysql/lib/mysql -lmysqlclient_r
-lpthread -lz -lcrypt -lnsl -lm -lpthread]
--socket [/tmp/mysql.sock]
--port [3306]
--version [4.0.16]
--libmysqld-libs [-L/usr/local/mysql/lib/mysql -lmysqld -lpthread -lz
-lcrypt -lnsl -lm -lpthread -lrt]
You can use mysql_config within a command line to include the value that it displays for a particular option. For example, to compile a MySQL client program, use mysql_config as follows:
shell>CFG=/usr/local/mysql/bin/mysql_configshell>sh -c "gcc -o progname `$CFG --cflags` progname.c `$CFG --libs`"
When you use mysql_config this way, be
sure to invoke it within backtick
(‘`’) characters. That tells
the shell to execute it and substitute its output into the
surrounding command.

User Comments
If you change the location of the MySQL socket (by using the my.cnf file, for example), please note "mysql_config --socket" will not return the new location, but the default one, or the one you specified at configuration time.
If you want to change the location of the socket (if you run two instances of MySQL on the same server, for example), then you need to reinstall MySQL with the "--with-unix-socket-path=" in the configuration options. This is vital as some external applications will ask mysql_config for this information.
I guess if you modify the mysql_safe command in the mysql.server script by adding the "--with-unix-socket-path=" option, it would work correctly, but the next time you will update MySQL, you may forget to change it in the script...
Add your own comment.