如果使用./support-files/mysql.server 文件启动,则默认读取/etc/my.cnf 配置文件,这种方式有时候启动不了。
会提示报错 :The server quit without updating PID file。所以建议在CentOS 7 以上版本使用systemctl管理mysql。
所以我们使用启动命令mysqld_safe启动,多个实例只是重复下面的过程,更换目录和端口即可,当然也有一个mysql软件启动多个实例的方法。
解压mysql二进制包
useradd -r -s /sbin/nologin mysql
tar xvf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql
chown mysql.mysql -R /usr/local/mysql
初始化数据库
该过程必须到安装目录以相对路径去执行初始化命令。
yum -y install autoconf libaio libaio-devel
cd /usr/local/mysql && scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
mkdir /usr/local/mysql/run
chown mysql.mysql -R /usr/local/mysql
创建配置文件
初始化完成后,默认会在 ./mysql/ 目录下创建 my.cnf 的文件
-rw-r--r-- 1 root root 492 5月 19 12:55 my.cnf
清空该文件,写入如下配置 vim ./my.cnf,可以根据自己需求修改配置
其中[client]区域是mysql客户端的配置,二进制包默认读取 /etc/my.cnf (在编译时习惯指定该位置)
[client] port = 3306 socket = /usr/local/mysql/run/mysql.sock [mysql] default_character_set = utf8 [mysqld] basedir = /usr/local/mysql datadir = /usr/local/mysql/data log-error = /usr/local/mysql/data/error.log pid-file = /usr/local/mysql/run/mysql.pid socket = /usr/local/mysql/run/mysql.sock port = 3306 user = mysql bind-address = 0.0.0.0 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES default-storage-engine = INNODB lower_case_table_names = 1 collation-server = utf8_general_ci character-set-server = utf8 wait_timeout = 1200 interactive_timeout = 1200
启动数据库
首先说明一点,如果安装目录不是/usr/local/mysql,则启动时可能要在mysql目录下启动才会成功,否则会启动失败。
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf
补充命令
因为启动多个mysql,所以我们指定了PID文件和套接字文件的位置,所以登录时要指定套接字或者ip+端口方式登录
/usr/local/mysql/bin/mysql -S /usr/local/mysql/run/mysql.sock -uroot -p /usr/local/mysql/bin/mysql -h 127.0.0.1 -P 3306 -uroot -p
关闭数据库,可以使用kill 直接将其杀死(守护进程和mysql进程都要杀死),但不推荐这种方式,建议使用mysqladmin命令
/usr/local/mysql/bin/mysqladmin -S /usr/local/mysql/run/mysql.sock -uroot -p shutdown
查看mysql状态
/usr/local/mysql/bin/mysqladmin -S /usr/local/mysql/run/mysql.sock -uroot -p ping
创建systenctl脚本
# /etc/systemd/system/mysqld.service [Unit] Description=MySQL database server After=syslog.target After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld_safe
--defaults-file=--defaults-file=/usr/local/mysql/my.cnf TimeoutSec=300 [Install] WantedBy=multi-user.target