以mysql 5为例,准备一个mysql.cnf文件、一个docker.start.sh文件和一个空的data文件夹即可。data文件夹是真正用来存储数据的。
mysql.cnf文件内容如下,注意要把这个文件的权限限制为644,如果改成777的话mysql会认为此文件权限过高导致不生效
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8 #数据库默认字符
collation-server=utf8_bin
default-storage-engine=INNODB #默认引擎
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row
#interactive_timeout=120
#wait_timeout=120
#log_warnings=1
explicit_defaults_for_timestamp=1
max-connections=1000 #默认连接数只有100多,很容易跑满,这里修改为1000
[mysql]
docker.start.sh运行命令如下:
docker run -d -v $(pwd)/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -v $(pwd)/data:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root账号的密码 --restart=always --name=mysql mysql:latest