Kali中安装mysql自动安装脚本

查看创建的mysql用户:

cat /etc/passwd | grep mysql

  安装步骤:

1.先删除mariadb

apt-get autoremove --purge mariadb-client-core-10.3
apt-get autoremove --purge

2.把mysql的压缩包文件放入到/usr/local

3.执行解压命令

tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

4.修改文件名

mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql

5.创建用户:

 userdel mysql
 groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql

 6.切换到mysql用户:

su mysql

 7.进入到安装目录:

cd mysql

8.执行初始数据命令:(这里安装的5.7 其他版本可能不一样)参考:https://www.cnblogs.com/xuanzhi201111/p/5148113.html

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

9.exit退出mysql用户

10.拷贝文件:

cp support-files/mysql.server /etc/init.d/mysql
cp support-files/my-default.cnf /etc/my.cnf   (5.7没有这个文件,自己找一个)
cp bin/mysql /usr/bin/

  11.创建log文件输出路径:

mkdir log
touch log/mysqld.log
chown -R mysql:mysql log/
chmod -R 755 log/mysqld.log

  12.修改配置文件vim /etc/init.d/mysql

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data  (这个拷贝文件中如果添加,就不需要改了)

  修改下配置文件:vim /etc/my.cnf

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
max_heap_table_size = 512M
[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld.log
另外将被注释掉的innodb_buffer_pool_size = 128M放开(缺省值是8M,在批量插入数据过多时会产生错误,memsql设置128即可,MySQL需要设置为9G)

  启动数据库:

service mysql start 

运行命令:vi /etc/my.cnf,编辑文件

在文件的[mysqld]标签下添加一句:skip-grant-tables

service mysql stop

service mysql start

进入数据库:mysql -u root

使用数据库:use mysql;
运行:

update mysql.user set authentication_string=password('root') where user='root';    
root_password替换成你想要的密码

  exit退出

把my.conf的skip-grant-tables删除,重启数据库,

 修改自己的账号:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

  刷新权限

flush privileges;

  退出:

quit;

设置访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

  刷新访问权限表

flush privileges;
刷新服务:
service mysql restart
重启服务:

service mysql restart;

添加用户:

CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';

  自动安装脚本:网上的好多都不能用。

#!/bin/bash
#coding: utf-8
#filename: mysql_install.sh
#version: 1.0
#desc: mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 安装脚本
#attention: 需要 root 用户执行

echo '1、判断当前用户是否为root用户'
if [ $(id -u) != "0" ];then
	echo "error: you must be root run this script"
	exit 1
fi

echo '2、定义变量'
WKDIR=$(pwd)
INSTALL_HOME="/opt/module"
MYSQL_HOME="$INSTALL_HOME/mysql5.7"
MYSQL_DATA="$MYSQL_HOME/data"
MYSQLD_HOME="/var/run/mysqld/mysqld.sock"

[ -d $INSTALL_HOME ] || mkdir -p $INSTALL_HOME

echo ' 3、检验安装目录'
if [ -d $MYSQL_HOME ];then
	echo "erro: your system have installed mysql"
	exit 1
fi

echo ' 4、卸载系统自带数据库'
apt-get remove mariadb* -y
apt-get remove mysql-common -y

echo '5、开始安装'
echo "start installing mysql"
echo ' 解压'
echo "start tar..."
tar -xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.28-linux-glibc2.12-x86_64 $MYSQL_HOME
echo "tar complete"
[ -d $MYSQL_DATA ] || mkdir -p $MYSQL_DATA

echo ' 创建用户'
id mysql > /dev/null 2>&1
if [ $? -ne 0 ];then
	useradd -s /sbin/nologin -M mysql
fi

echo ' 创建配置文件及日志目录'
mkdir -p $MYSQL_HOME/etc
mkdir -p $MYSQL_HOME/logs
mkdir -p $MYSQL_HOME/tmp
mkdir -p /var/run/mysqld
chown  -R mysql:mysql /var/run/mysqld/
echo ' 更改 mysql 目录所属用户和组'
chown -R mysql:mysql $MYSQL_HOME
echo "initializing mysql"

echo ' 初始化 mysql 数据库'
$MYSQL_HOME/bin/mysqld --initialize --basedir=$MYSQL_HOME --datadir=$MYSQL_DATA --user=mysql

echo ' 创建配置文件'
cat >$MYSQL_HOME/etc/my.cnf<<EOF
[mysqld]
daemonize = on
user = mysql
port = 3306
skip-grant-tables
basedir = /opt/module/mysql5.7
datadir = /opt/module/mysql5.7/data
socket = /var/run/mysqld/mysqld.sock
pid-file = /opt/module/mysql5.7/tmp/mysqld.pid
log-error = /opt/module/mysql5.7/logs/mysqld.log

character-set-server=utf8
collation-server=utf8_general_ci
innodb_buffer_pool_size = 10G
innodb_log_file_size = 512M
max_heap_table_size=5120M
max_allowed_packet=100M
max_connections=1000
event_scheduler=ON
lower_case_table_names=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[client]
socket = /var/run/mysqld/mysqld.sock
default-character-set=utf8
EOF

echo ' 注册服务'
cat >/lib/systemd/system/mysqld.service<<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/opt/module/mysql5.7/bin/mysqld --defaults-file=/opt/module/mysql5.7/etc/my.cnf
LimitNOFILE = 5000
Restart=on-failure
PrivateTmp=false
EOF

echo ' 配置环境变量'
cat > /etc/profile.d/mysql.sh<<EOF
export PATH=$PATH:/opt/module/mysql5.7/bin
EOF

echo ' 使配置的环境变量生效'
source /etc/profile.d/mysql.sh
cp $MYSQL_HOME/bin/mysql  /usr/bin/
echo ' 启动服务'
systemctl start mysqld
systemctl enable mysqld

#按照hydra
cd $WKDIR
dpkg -i libmariadb3_1%3a10.3.22-1_amd64.deb mysql-common_5.8+1.0.5_all.deb libmariadb3_1%3a10.3.22-1_amd64.deb mariadb-common_1%3a10.3.22-1_all.deb hydra_9.0-1_amd64.deb
#设置开机启动
systemctl enable /lib/systemd/system/mysqld.service

echo "=======进入数据库======="
    mysql --socket=$MYSQLD_HOME -uroot -e "update mysql.user set authentication_string=password('root') where user='root';"

echo "======删除my.conf中的skip-grant-tablese删除====="
    sed -i '5d' /opt/module/mysql5.7/etc/my.cnf;
    service mysqld restart


echo "=====设置root的访问权限====="
    
	mysql --socket=$MYSQLD_HOME -uroot -proot --connect-expired-password -e "alter user 'root'@'localhost' identified by 'blessme';"
	mysql --socket=$MYSQLD_HOME -uroot -pblessme -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;"
	
echo "=====添加新的用户======"	
    mysql --socket=$MYSQLD_HOME -uroot -pblessme -e "CREATE USER 'oms'@'localhost' IDENTIFIED BY '1234';"
    mysql --socket=$MYSQLD_HOME -uroot -pblessme -e "GRANT GRANT OPTION ON *.* TO 'oms'@'localhost';"
    mysql --socket=$MYSQLD_HOME -uroot -pblessme -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'oms'@'localhost';"
    mysql --socket=$MYSQLD_HOME -uroot -pblessme -e "ALTER USER 'oms'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';"
    service mysqld restart

echo "开始创建 数据库";

mysql --socket=$MYSQLD_HOME -uoms -p1234 -e "create database dris_common default charset 'utf8' collate 'utf8_bin';"
mysql --socket=$MYSQLD_HOME -uoms -p1234 -e "create database dris_state default charset 'utf8' collate 'utf8_bin';"
mysql --socket=$MYSQLD_HOME -uoms -p1234 -e "create database dris_history default charset 'utf8' collate 'utf8_bin';"
mysql --socket=$MYSQLD_HOME -uoms -p1234 -e "create database dris_asset default charset 'utf8' collate 'utf8_bin';"
mysql --socket=$MYSQLD_HOME -uoms -p1234 -e "create database syslog default charset 'utf8' collate 'utf8_bin';"

mysql --socket=$MYSQLD_HOME -uoms -p1234 <<EOF
	use dris_common;
	source sql/dris_common.sql;
    use dris_state;
	source sql/dris_state.sql;
	use dris_history;
	source sql/dris_history.sql;
	use dris_asset;
	source sql/dris_asset.sql;
EOF

echo "开始创建 数据库完成";

  

原文地址:https://www.cnblogs.com/sunliyuan/p/13208611.html