欢迎投稿

今日深度:

CentOS7.3安装MySQL5.7.22多实例,

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;
     
     

 

www.htsjk.Com true http://www.htsjk.com/mariadb/30235.html NewsArticle 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...
相关文章
    暂无相关文章
评论暂时关闭