CentOS7.3安装MySQL5.7.22多实例

卸载mariadb,同理查询本机是否有mysql
查询本机mariadb,输入:rpm -qa | grep mariadb
显示:mariadb-libs-5.5.56-2.el7.x86_64
输入:rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
再次查询:rpm -qa | grep mariadb
没有结果,继续下一步
   
查询mysql,输入:rpm -qa | grep mysql
没有结果,继续下一步
   
yum -y install epel-release
   
yum -y install cmake
   
为将来方便还可以把相关的也一并安装了:
yum install autoconf automake libtool
yum install -y gcc libgcc gcc-c++ compat-gcc
   
安装可能依赖库
yum -y install krb5 krb5-devel libidn libidn-devel openssl openssl-devel
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxm12 libxm12-devel
yum -y install zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel
yum -y install ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel
yum -y install perl-Data_dumper python-devel
   
解压mysql安装包
tar  zxvf /root/mysql-boost-5.7.22.tar.gz
cd mysql-5.7.22
   
cmake -DWITH_BOOST=boost -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.22 -DMYSQL_DATADIR=/mnt/data/mysqldb -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DMYSQL_USER=mysql -DWITH_ZLIB=bundled -DWITH_READLINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0 -DWITH_SSL=system
安装和编译
输入:make
执行make进行编译,编译过程中没有错误的再执行make install安装,由于源代码体积有点大,编译耗费的时间比较长。
显示:[100%] Built target my_safe_process
   
输入: make install
安装成功之后,在/usr/local/mysql-5.7.22下就是安装后的文件目录
   
数据库初始化
   
首先创建文件夹,输入:
mkdir -p /mnt/data/mysqldb/3306/data
mkdir -p /mnt/data/mysqldb/3316/data
   
/mnt/data/mysqldb/3306/data文件夹用于存放监听3306端口实例的相关配置信息、执行脚本和数据,
/mnt/data/mysqldb/3316/data文件夹用于存放监听3316端口实例的相关配置信息、执行脚本和数据。
因为mysql数据库将以nginx这个用户来运行,因此首先需要创建这个账户:
useradd mysql -s /sbin/nologin -M   //创建mysql用户,但该用户无法登陆且不创建它的家目录
   
分别在/mnt/data/mysqldb/3306和/mnt/data/mysqldb/3316创建my.cnf文件,可以使用vim创建并粘贴内容。
编辑内容输入:
[client] 
port=3306
socket=/mnt/data/mysqldb/3306/mysql.sock
   
[mysqld_safe]
log-error=/mnt/data/mysqldb/3306/mysql.err
pid-file=/mnt/data/mysqldb/3306/mysql.pid
   
[mysqld]
#  
# * Basic Settings
#  
server-id= 6
log-bin=/mnt/data/mysqldb/3306/mysql-bin
user=mysql
pid-file=/mnt/data/mysqldb/3306/mysql.pid
socket=/mnt/data/mysqldb/3306/mysql.sock
port=3306
basedir=/usr/local/mysql-5.7.22
datadir=/mnt/data/mysqldb/3306/data
tmpdir=/tmp
open_files_limit=1024
external-locking=false
character-set-server=utf8
default-storage-engine=InnoDB                                                         //sonqrqube要求为InnoDB,非MyISAM;
bind-address=0.0.0.0
max_allowed_packet= 8M
thread_stack=192K
thread_cache_size= 8
   
max_connections=800
max_connect_errors=300
#table_cache=64
#thread_concurrency 10
   
query_cache_limit=1M
query_cache_size=2M
join_buffer_size=1M
sort_buffer_size=1M
   
long_query_time=1
relay-log=/mnt/data/mysqldb/3306/relay-bin
relay-log-info-file =/mnt/data/mysqldb/3306/relay-log.info
binlog_cache_size=1M
max_binlog_cache_size=1M
max_binlog_size=2M
key_buffer_size=16M
read_buffer_size=1M
read_rnd_buffer_size=1M
bulk_insert_buffer_size=1M
lower_case_table_names=1
skip-name-resolve
slave-skip-errors =1032,1062
replicate-ignore-db=mysql
#innodb_additional_mem_pool_size=4M
innodb_buffer_pool_size=32M
innodb_data_file_path=ibdata1:12M:autoextend
#innodb_file_io_threads=4
innodb_thread_concurrency=8
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=2M
innodb_log_file_size=4M
#innodb_log_files_in_groups=3
innodb_max_dirty_pages_pct=90
innodb_lock_wait_timeout=120
innodb_file_per_table=0
[mysqldump]
quick 
quote-names
max_allowed_packet=16M
   
   
输入: 
cd /mnt/data/mysqldb/3316      //打开3316目录
vim my.cnf                                                      //新建my. cnf文件,并编辑
   
注:在3306及3316配置中都提到了mysql.err这个文件,这个文件是用来记录MySQL启动过程的错误信息的,不过悲催的是如果这个文件不存在,那么是会启动出错的,可又没有地方可以查看错误,因此需要提前创建好文件并设置权限。
输入: 
touch /mnt/data/mysqldb/3306/mysql.err
touch /mnt/data/mysqldb/3316/mysql.err
chmod 766 /mnt/data/mysqldb/3306/mysql.err
chmod 766 /mnt/data/mysqldb/3316/mysql.err
   
创建MySQL的启动文件
分别在/mnt/data/mysqldb/3306和/mnt/data/mysqldb/3316创建mysql文件。可用vim来创建文件,这个文件是用来启动MySQL实例的,所以在创建完成不要忘记chmod 755设置。/mnt/data/mysqldb/3306/mysql
cd /mnt/data/mysqldb/3306           //打开3306目录
vim mysql                                                      //新建mysql 文件,并编辑
   
mysql输入:
#!/bin/sh
port=3306
mysql_user="root"
mysql_pwd="mypassword"
cmd_path="/usr/local/mysql-5.7.22/bin"
mysql_sock="/mnt/data/mysqldb/${port}/mysql.sock"
   
#startup function
function_start_mysql()
{  
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
/bin/sh ${cmd_path}/mysqld_safe --defaults-file=/mnt/data/mysqldb/${port}/my.cnf 2>&1 > /dev/null &
else 
echo"mysql is running..."
exit 
fi  
}  
   
#stop function
function_stop_mysql()
{  
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit 
else 
printf "Stoping MySQL...\n"
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /mnt/data/mysqldb/${port}/mysql.sock shutdown
fi  
}  
#restart function
function_restart_mysql()
{  
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2 
function_start_mysql
}  
case $1 in
start) 
function_start_mysql;;
stop) 
function_stop_mysql;;
restart) 
function_restart_mysql;;
*)  
printf "Usage: /mnt/data/mysqldb/${port}/mysql {start|stop|restart}\n"
esac 
   
注意: 
上述启动文件中关闭实例没有采用kill进程的办法,而是使用mysqladmin shutdown的方法,这个方法需要root级别用户的账号和密码,因此需要控制这个文件的查看和编辑权限。需要给两个文件设置执行权限。输入:
chmod 755 /mnt/data/mysqldb/3306/mysql
chmod 755 /mnt/data/mysqldb/3316/mysql
   
chown -R mysql:mysql /usr/local/mysql-5.7.22
   
/usr/local/mysql-5.7.22/bin/mysqld --initialize --basedir=/usr/local/mysql-5.7.22 --datadir=/mnt/data/mysqldb/3306/data --user=mysql
/usr/local/mysql-5.7.22/bin/mysqld --initialize --basedir=/usr/local/mysql-5.7.22 --datadir=/mnt/data/mysqldb/3316/data --user=mysql
   
上面的脚本如果执行成功,最后一句里有root用户的初始密码,在本人执行上述两条命令时得到结果显示如下,密码是随机的,请记住一会登录系统后更改临时密码。
3306操作显示:2018-02-02T07:17:16.388131Z 1 [Note] A temporary password is generated for root@localhost: Q-cVosqiv20M
3316操作显示2018-02-02T08:07:55.437243Z 1 [Note] A temporary password is generated for root@localhost: &u%IKv3?:aOx
   
启动MySQL实例和登录
启动3306/3307端口实例,输入:
/mnt/data/mysqldb/3306/mysql start
/mnt/data/mysqldb/3316/mysql start
显示:Starting MySQL...
   
输入:ps -ef | grep mysql  //查看实例是否启动成功,如果启动成功相应的端口就会处于监听状态。
   
如果启动不成功,可以通过相应的错误日志来排除错误,如下就是用tail来查看错误日志:tail /mnt/data/mysqldb/3306/mysql.err  
   
登录实例
cd /usr/local/mysql-5.7.22
./bin/mysql -u root -p -S /mnt/data/mysqldb/3306/mysql.sock
显示:nter password:  
输入:上述随机产生的密码Q-cVosqiv20M   
显示:Welcome to the MySQL monitor.  Commands end with ; or \g.
登陆成功
设置密码:
mysql> set password = password('123123');    //此处密码设置为123123,密码可自行设置
显示:uery OK, 0 rows affected,设置成功。
mysql>quit     //退出数据库
/mnt/data/mysqldb/3306/mysql stop     //停止3306mysql端口
   
改完之后记得改3306和3307两个启动文件中的用户密码哦,否则stop命令不会生效的。
至此,MySQL数据库已完成初始化和初步配置。
   
登录到3316端口对应的实例:
cd /usr/local/mysql-5.7.22
./bin/mysql -u root -p -S /mnt/data/mysqldb/3316/mysql.sock
显示:nter password:  
输入:上述随机产生的密码&u%IKv3?:aOx  
显示:Welcome to the MySQL monitor.  Commands end with ; or \g.
登陆成功
设置密码:
mysql> set password = password('123123');    //此处密码设置为123123,密码可自行设置
显示:uery OK, 0 rows affected,设置成功。
mysql>quit     //退出数据库
/mnt/data/mysqldb/3316/mysql stop     //停止3316mysql端口
   
grant all privileges on *.* to 'xry'@'210.22.109.150' identified by 'zaq12wsx' with grant option;
flush privileges;
   
   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值