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

来源:互联网 发布:广州数据分析师 编辑:程序博客网 时间:2024/05/17 21:56

一、环境

OS   环境:Linux db01 2.6.32-431.el6.i686MySQL   版本:mysql-5.5.44MySQL安装路径:/usr/local/mysqlMySQL数据路径:/dataMySQL   端口:3506 3507MySQL服务器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 /appcd /app && tar mysql-5.5.44.tar.gzcd 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 /datatouch my.cnf mysqld

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

[client]port        = 3507                        # 注意与3506实例区分socket      = /data/3507/mysql.sock[mysqld]port        = 3507socket      = /data/3507/mysql.sockbasedir = /usr/local/mysqldatadir = /data/3507/dataopen_files_limit = 1024back_log = 600max_connections = 800max_connect_errors = 3000table_cache = 614external-locking = FALSEmax_allowed_packet = 8Msort_buffer_size = 1Mjoin_buffer_size = 1Mthread_cache_size = 100thread_concurrency = 2query_cache_size = 2Mquery_cache_limit = 1Mquery_cache_min_res_unit = 2kthread_stack = 192ktmp_table_size = 2Mmax_heap_table_size = 2Mlong_query_time = 1pid-file = /data/3507/mysqld.pidlog-bin = /data/3507/mysqld-binrelay-log = /data/3507/relay-binrelay-log-info-file = /data/3507/relay-log.infoexpire_logs_days = 7key_buffer_size = 16Mread_buffer_size = 1Mread_rnd_buffer_size = 1Mbulk_insert_buffer_size = 1Mlower_case_table_names = 1skip-name-resolveslave-skip-errors = 1032,1062replicate-ignore-db = mysqlserver-id   = 3                       # 注意与3506实例区分innodb_additional_mem_pool_size = 4Minnodb_buffer_pool_size = 32Minnodb_data_file_path = ibdata1:128M:autoextendinnodb_file_io_threads = 4innodb_thread_concurrency = 8innodb_flush_log_at_trx_commit = 2innodb_log_buffer_size = 2Minnodb_log_file_size = 4Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120innodb_file_per_table = 0[mysqldump]quickmax_allowed_packet = 2M[mysqld_safe]log-error = /data/3507/mysql_lee3507.errpid-file = /data/3507/mysqld.pid

(2)编辑启动文件 vim mysqld

#!/bin/sh###################################This scripts is created by Lee at 2017-12-10#for mysql-multi###################################initport=3507                         # 注意与3506实例区分mysql_user="root"mysql_pwd="admin07"               # 注意密码设置(见后文)CmdPath="/usr/local/mysql/bin"mysql_sock="/data/${port}/mysql.sock"#startup functionfunction_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 functinofunction_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 functionfunction_retart(){   printf "Restarting Mysql...\n"   function_stop   sleep 2   function_start}case $1 instart)   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/mysqld3506ln -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 350tcp        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                   # 使用原来的密码登录3506ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)                      mysql -uroot -padmin06 -S /data/3506/mysql.sock                 # 使用新密码登录3506(修改成功)

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