MySQL5.5源码安装----Cmake(多实例)

一、环境

OS   环境:Linux db01 2.6.32-431.el6.i686
MySQL   版本:mysql-5.5.44
MySQL安装路径:/usr/local/mysql
MySQL数据路径:/data
MySQL   端口:3506 3507
MySQL服务器ip:10.0.0.61

二、准备工作

1. 依赖包安装

 yum install ncurses-devel libaio-devel gcc gcc-c++ bison -y

2. 安装编译软件

yum install cmake -y

3. 创建管理用户

useradd mysql -s /sbin/nologin -M

4. 解压软件包

mkdir /app
cd /app && tar mysql-5.5.44.tar.gz
cd mysql-5.5.44

三、MySQL安装

1. Cmake编译

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 

2. install(时间较长)

  make && make install && cd ..

3.配置文件

mkdir /data/{3506,3507}/data -p && cd /data
touch my.cnf mysqld

(1)编辑配置文件 vim my.cnf

[client]
port        = 3507                        # 注意与3506实例区分
socket      = /data/3507/mysql.sock

[mysqld]
port        = 3507
socket      = /data/3507/mysql.sock
basedir = /usr/local/mysql
datadir = /data/3507/data
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 8M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
thread_stack = 192k
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1
pid-file = /data/3507/mysqld.pid
log-bin = /data/3507/mysqld-bin
relay-log = /data/3507/relay-bin
relay-log-info-file = /data/3507/relay-log.info
expire_logs_days = 7
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

server-id   = 3                       # 注意与3506实例区分

innodb_additional_mem_pool_size = 4M
innodb_buffer_pool_size = 32M
innodb_data_file_path = ibdata1:128M: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_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0

[mysqldump]
quick
max_allowed_packet = 2M

[mysqld_safe]
log-error = /data/3507/mysql_lee3507.err
pid-file = /data/3507/mysqld.pid

(2)编辑启动文件 vim mysqld

#!/bin/sh
##################################
#This scripts is created by Lee at 2017-12-10
#for mysql-multi
##################################

#init
port=3507                         # 注意与3506实例区分
mysql_user="root"
mysql_pwd="admin07"               # 注意密码设置(见后文)
CmdPath="/usr/local/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"

#startup function
function_start(){
  if [ ! -e "$mysql_sock" ];then
    printf "Starting Mysql ...\n"
    /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
  else
    printf "Mysql is running ...\n"
    exit
  fi
}

#stop functino
function_stop(){
  if [ ! -e "$mysql_sock" ];then
    printf "Mysql is stopped...\n"
    exit
  else
    printf "Stoping Mysql...\n"
    ${CmdPath}/mysqladmin -u ${msyql_user} -p${msyql_pwd} -S /data/${port}/mysql.sock shutdown
  fi
}

#retart function
function_retart(){
   printf "Restarting Mysql...\n"
   function_stop
   sleep 2
   function_start
}

case $1 in
start)
   function_start
;;
stop)
   function_stop
;;
restart)
   function_restart
;;
*)
  printf "Usage: /data/${port}/mysqld {start|stop|restart}\n"
esac

(3)分配配置文件给实例

cp /data/my.cnf mysqld /data/3506/
cp /data/my.cnf mysqld /data/3507/
sed -i 's#3507#3506#g' /data/3506/my.cnf /data/3506/mysqld

4.权限设置

find /data -name mysqld |xargs chmod 744                        # 为启动文件添加可执行权限
chown -R mysql:mysql /data                          # 给mysql用户赋予管理data目录的权限
chown -R mysql:mysql /usr/local/mysql     

5. 实例初始化

cd /usr/local/mysql/scripts/
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3506/data --user=mysql
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3507/data --user=mysql

6. 设置环境变量(此处使用加入到默认的环境变量目录下)

 cp /usr/local/mysql/bin/* /usr/local/sbin/ 

7. 规范启动文件

ln -s /data/3506/mysqld /etc/init.d/mysqld3506
ln -s /data/3507/mysqld /etc/init.d/mysqld3507

四、MySQL测试使用

1. 启动服务

 /etc/init.d/mysqld3306 start
 /etc/init.d/mysqld3307 start
或者
 /data/3506/mysqld start
 /data/3507/mysqld start

1. 查看端口是否启动

netstat -tunlp |grep 350
tcp        0      0 0.0.0.0:3506                0.0.0.0:*                   LISTEN      18545/mysqld        
tcp        0      0 0.0.0.0:3507                0.0.0.0:*                   LISTEN      19902/mysqld

3. 登录mysql(多实例mysql启动使用-S 指定socket)

mysql -S /data/3507/mysql.sock                 # 默认无密码登录(在未设置密码前)
mysql -uroot -p -S /data/3507/mysql.sock    

4. 远程登录设置

mysql -uroot -p -S /data/3506/mysql.sock -h 10.0.0.51 -P 3506     #远程登录(大写的P指定端口)
ERROR 1130 (HY000): Host '10.0.0.61' is not allowed to connect to this MySQL server 

授权

备注:允许在ip为10.0.0.61的主机上登录mysql(mysql服务器ip为10.0.0.51)

[root@db01 data]# mysql -uroot -p -S /data/3506/mysql.sock)
Enter password: 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.61' IDENTIFIED BY 'admin06' WITH GRANT OPTION;
mysql>FLUSH   PRIVILEGES;  

5. 密码设置
(1)初始化密码

mysqladmin password admin -S /data/3506/mysql.sock         # 为3506设置密码
mysqladmin password admin07 -S /data/3507/mysql.sock       # 为3507设置密码
mysql -uroot -padmin -S /data/3506/mysql.sock              # 登录3506

(2)修改密码

mysqladmin -padmin password admin06 -S /data/3506/mysql.sock    # 更改3506的密码
mysql -uroot -padmin -S /data/3506/mysql.sock                   # 使用原来的密码登录3506
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)                      
mysql -uroot -padmin06 -S /data/3506/mysql.sock                 # 使用新密码登录3506(修改成功)

特别感谢:Oldboy老师的指导!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值