使用方法
source install_mysql.sh
install_mysql.sh
接收$1
参数,设置mysql密码,默认密码为mysql初始密码,会打印出来。
$2
为安装路径,默认安装路径为/usr/local
.
$3
为数据存储路径,默认安装路径为/usr/local/mysql/data
.
install_mysql.sh
#!/bin/bash . /etc/init.d/functions password=$1 directory=$2 data_dir=$3 current_dir=`pwd` function select_installation_directory(){ if [[ -z ${directory} ]]; then directory='/usr/local' fi if [[ -z ${data_dir} ]]; then data_dir=${directory}/mysql/data fi } function delete_mariadb(){ for i in $(rpm -qa | grep mariadb | grep -v grep) do echo "卸载mariadb -> "$i rpm -e --nodeps $i done } function check_gcc(){ if [[ -z $(rpm -qa | grep ^gcc | grep -v grep) ]]; then cd gcc && rpm -Uvh *.rpm --nodeps --force && cd .. fi } function create_mysql_config(){ [[ -f /etc/my.cnf ]] && mv /etc/my.cnf /etc/my.cnf-$(date +%F-%H:%H:%S) cd "${current_dir}" && cp my.cnf /etc/ system_mem_size=$(grep "^MemTotal" /proc/meminfo |awk '{print $2}') innodb_buffer_pool_size="$(echo "${system_mem_size}"/1024/10*6|bc)M" sed -i "s#^socket.*#socket = ${data_dir}/mysql.sock#g" /etc/my.cnf sed -i "s#^slow_query_log_file.*#slow_query_log_file = ${data_dir}/slow.log#g" /etc/my.cnf sed -i "s#^log-error.*#log-error = ${data_dir}/error.log#g" /etc/my.cnf sed -i "s#^log-bin.*#log-bin = ${data_dir}/mybinlog#g" /etc/my.cnf sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = ${innodb_buffer_pool_size}M#g" /etc/my.cnf sed -i "s#^innodb_undo_directory.*#innodb_undo_directory = ${data_dir}/undolog#g" /etc/my.cnf sed -i "s#^basedir.*#basedir = ${directory}/mysql#g" /etc/my.cnf sed -i "s#^datadir.*#datadir = ${data_dir}#g" /etc/my.cnf echo -e "\n" } function add_mysql_user(){ id mysql >& /dev/null if [[ $? -ne 0 ]]; then echo "用户不存在,开始创建mysql用户" groupadd mysql useradd -g mysql mysql fi } function install_mysql(){ tar_name=$(ls .|grep mysql-.*.tar.gz) tar_dir=${tar_name%.tar.gz*} tar -zxvf "${current_dir}"/"${tar_name}" mv "${current_dir}"/"${tar_dir}" ${directory}/mysql if [ ! -d ${data_dir} ];then mkdir ${data_dir} fi echo -e "开始初始化数据库" cd ${directory}/mysql && bin/mysqld --initialize --user=mysql --basedir=${directory}/mysql --datadir=${data_dir} if [[ $? -eq 0 ]];then action "MySQL初始化完毕" /bin/true mysql_init_pwd=$(grep "temporary password" ${data_dir}/error.log |awk -F "[: ]" '{print $NF}') echo "MySQL初始化密码为:${mysql_init_pwd}" chown -R mysql:mysql ${directory}/mysql echo -e "\n" else action "MySQL初始化失败请查看${data_dir}/error.log日志" /bin/false exit fi } function powered_up_mysql(){ cd ${directory}/mysql/support-files && cp mysql.server /etc/init.d/mysql sed -i "s#^basedir=.*#basedir=${directory}/mysql#g" /etc/init.d/mysql sed -i "s#^datadir=.*#datadir=${data_dir}#g" /etc/init.d/mysql service mysql start chkconfig mysql on } function login_mysql(){ if [[ -z ${password} ]]; then password=${mysql_init_pwd} fi login_mysql="${directory}/mysql/bin/mysql -uroot -p${mysql_init_pwd} --connect-expired-password" ${login_mysql} <<EOF alter user 'root'@'localhost' identified by '${password}'; use mysql; update user set host='%' where user='root' and host='localhost'; flush privileges; EOF } function Main(){ select_installation_directory; delete_mariadb; check_gcc; create_mysql_config; add_mysql_user; install_mysql; powered_up_mysql; login_mysql; } Main;