在Linu型环境下面安装MySQL指导

来源:互联网 发布:java基础游戏开发实例 编辑:程序博客网 时间:2024/05/29 04:41
(1) 环境说明
MySQL软件:Mysql*Enterprise-Server.tar.gz *指版本号 此MySQL软件不需要编译
操作系统: SUSE Linux Enterprise Server 10 (x86_32) 或SUSE Linux Enterprise Server 10 (x86_64) 
           或SUSE Linux Enterprise Server 11 (x86_32) 或SUSE Linux Enterprise Server 11 (x86_64) 
           其他操作系统没有测试过
          
(2) 安装规划
MySQL默认shell环境为:csh          mysql_usershell=/usr/bin/csh


MySQL服务端口号: 3306             mysql_server_port=3306


MySQL用户名:mysql                mysql_username=mysql
MySQL用户密码: ShareWorld520      mysql_password=ShareWorld520
MySQL用户ID:2100                 mysql_userid=2100


MySQL用户组:mysql                mysql_groupname=mysql
MySQL用户组ID:2200                mysql_groupid=2200


MySQL家目录:/home/mysql          mysql_userhome=/home/${mysql_username}


MySQL的配置文件my.cnf路径         mysql_config_file=/home/${mysql_username}/my.cnf


MySQL软件路径: /root/Mysql*Enterprise-Server.tar.gz  mysql_pkg_path="/root/Mysql*Enterprise-Server.tar.gz"


(3) 安装步骤
#创建用户组 增加-o参数,gid即使已经存在,也要创建
groupadd -o -g ${mysql_groupid} ${mysql_groupname} 


# 创建用户的同时设置用户密码
mysql_password=`mkpasswd ${mysql_password} at 2>/dev/null`
useradd -u ${mysql_userid} -g ${mysql_groupid} -d ${mysql_userhome} -s ${mysql_usershell} -m ${mysql_username} -p ${mysql_password}


#解压MySQL数据库安装包到MYSQL的家目录下
tar -zxf ${mysql_pkg_path} -C "${mysql_userhome}/"


#配置mysql系统参数文件        
#获取内存大小
t_sys_mem=`free -m | grep -w "Mem:" | awk '{print $2}'`
#按照物理内存的50%配置MySQL的性能参数
(( t_mysql_max_mem = t_sys_mem*5/10 )) #你也可以通过其他方式获取值
修改/home/mysql/my.cnf文件,配置innodb_buffer_pool_size大小为内存的50%,具体也可以自己定义
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size=${t_mysql_max_mem}#g" ${mysql_config_file}


#配置MySQL的端口号
sed -i "s#^port.*#port=${mysql_server_port}#g" ${mysql_config_file}


#最大在线客户端连接数 
sed -i "s#^max_connections.*#max_connections=2000#g" ${mysql_config_file}    


#设置服务器端缓存的客户端连接线程数量
sed -i "s#^thread_cache_size.*#thread_cache_size=128#g" ${mysql_config_file} 


#触发事务日志缓存写磁盘的策略
sed -i "s#^innodb_flush_log_at_trx_commit.*#innodb_flush_log_at_trx_commit=1#g" ${mysql_config_file} 


#innodb的日志文件大小
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size=1G#g" ${mysql_config_file} 


#二进制日志的内容格式
sed -i "s#^binlog_format.*#binlog_format=mixed#g" ${mysql_config_file} 


#开辟一片内存用于缓存InnoDB引擎的数据字典信息和内部数据结构
sed -i "s#^innodb_additional_mem_pool_size.*#innodb_additional_mem_pool_size=2M#g" ${mysql_config_file} 


#事件调度功能开关
sed -i "s#^event_scheduler.*#event_scheduler=0#g" ${mysql_config_file} 


#数据库和表名不区分大小写
sed -i "s#^lower_case_table_names.*#lower_case_table_names=1#g" ${mysql_config_file} 
  
#SQL排序缓存大小           
sed -i "s#^sort_buffer_size.*#sort_buffer_size=6M#g" ${mysql_config_file} 


#事务日志缓存大小        
sed -i "s#^innodb_log_buffer_size.*#innodb_log_buffer_size=3M#g" ${mysql_config_file} 


#MySQL的错误日志   
sed -i "s#^log-error.*#log-error=../log/error/mysqlerr#g" ${mysql_config_file}    


#sql的约束规则,注释掉sql-mode
sed -i 's/^\(sql-mode.*\)/#\1/' ${mysql_config_file} 


#更改MySQL解压后的安装包的属主以及可执行权限
chown -R ${mysql_username}:${mysql_groupname} ${mysql_userhome}


#修改binlog目录权限为700
chmod -R 700 ${mysql_userhome}/binlog


#使环境变量生效
su - ${mysql_username} -c "cd ${mysql_userhome};source .cshrc"


#初始化MySQL数据库
su - ${mysql_username} -c "${mysql_userhome}/scripts/mysql_install_db --basedir=${mysql_userhome}"


#启动MySql数据库
su - ${mysql_username} -c "mysql.server start"


#查看MySQL服务是否正常启动
su - ${mysql_username} -c "${MYSQL_USERHOME}/bin/mysql.server status" | grep -w done | wc -l


#修改mysql的root用户密码为ShareWorld520
su - ${mysql_username} -c "mysql -u root <<EOF
use mysql;
update user set password=password('${mysql_password}') where user='root';
flush privileges;
EOF"




#配置mysql用户的句柄数
t_limits_cf="/etc/security/limits.conf"
sed -i "/^${mysql_username}[ ]\{1,\}soft.*/d" ${t_limits_cf}
sed -i "/^${mysql_username}[ ]\{1,\}hard.*/d" ${t_limits_cf}
echo "${mysql_username} soft nproc 16384" >> ${t_limits_cf}
echo "${mysql_username} hard nproc 16384" >> ${t_limits_cf}
echo "${mysql_username} soft nofile 65536" >> ${t_limits_cf}
echo "${mysql_username} hard nofile 65536" >> ${t_limits_cf}


#对MySQL数据库执行一些加固(可选择加固)
#删除test数据库,创建MySQL双机监控用户
su - ${mysql_username} -c "mysql -u root -p${mysql_password} -s <<EOF
drop database if exists test;
delete from mysql.user where password='';
delete from mysql.user where user='';
commit;
EOF"




#附录:
#查询root用户数据库里面所有的表,并输出到指定文件中
su - ${mysql_username} -c "echo \"show tables;\" | mysql -u root -p${mysql_password} mysql" > /home/mysql/mysql_tables.inc


#编写执行mysql脚本的代码(将旧IP地址修改为新IP地址)


#!/bin/bash
t_old_ip=192.168.9.10
t_new_ip=192.168.9.100


mysql -u ${RCSCC_DB_USER} -p${DE_RCSCC_DB_PASSWD} ${RCSCC_DBNAME} <<EOF
use mysql;
update user set host = '${t_new_ip}' where host = '${t_old_ip}';
commit
EOF

原创粉丝点击