MySQL shell scripts and port FAQ: Can you share some MySQL examples that show how to start MySQL on a non-standard port (non default port)?
For a variety of reasons you may want or need to run your MySQL server on a different port than the default MySQL port of 3306. In those cases the easiest thing you can do is create a Unix/Linux shell script to start your MySQL server on some other port.
In this tutorial I share a couple of MySQL shell scripts that show how this can be done. The first shell script shows how to start MySQL on a non-standard port (5150 in this case), and the second MySQL script shows how to connect to the server as a MySQL client on a non-standard port (again, 5150).
How to start the MySQL server on a different port
Here’s the shell script that starts the MySQL server on a non-standard port:
#!/bin/sh #-------------------------# # program: startserver.sh # #-------------------------# nohup ./bin/mysqld \ --sock=/home/al/mysql/mysql.sock \ --datadir=/home/al/mysql/mysqldata \ --basedir=/home/al/mysql/mysql-5.0 \ --user=al \ --port=5150 \ &
How to start the MySQL client on a non-standard port
And here’s the shell script that fires up a MySQL command-line client program and connects to the MySQL server on a non-standard port. Note that I’m connecting to the database as the user root, and I’m connecting to a database named mydatabase:
#!/bin/sh
#-------------------------#
# program: startclient.sh #
#-------------------------#
echo "Connecting to mysql ..."
./bin/mysql --sock=/home/al/mysql/mysql.sock \
-u root \
--port=5150 \
-p \
mydatabase
How to run mysqldump when your server is on a non-standard port
Finally, here’s another shell script that runs the mysqldump command against the MySQL server that’s running on a non-standard port. Again I’m connecting to the database as the user root, and in this case I’m backing up a database named mydatabase:
#!/bin/sh
#---------------------------#
# program: mysqldump5150.sh #
#---------------------------#
echo "Connecting to mysql ..."
DATEFORMAT=`date +"%Y%m%d.%H%M"`
FILENAME="mysqldump.mydatabase.${DATEFORMAT}"
./bin/mysqldump --sock=/home/al/mysql/mysql.sock \
-u root \
--port=5150 \
-R \
-p \
mydatabase \
> $FILENAME

