MySQL数据库自动生成并修改随机root密码的脚本

在MySQL数据库部署的过程中,在安装了MySQL软件,并配置了my.cnf配置文件后,需要创建MySQL实例。

MySQL 5.5实例创建完成了,默认会有登陆用户名和密码为空的用户,一般需要修改root用户密码,并删除无效用户,然后才能提供给应用使用。

这个过程可以通过shell脚本自动完成实例创建,启动,自动生成密码,修改root用户密码,删除无效用户。

shell脚本有多种编写方法,我编写的shell脚本如下:

#!/bin/bash
# this scripts used to initial the mysql instance and modify password
# created by zhaofx

# MySQL software directory.
readonly SYMLINK=‘/usr/local/mysql‘
echo "MySQL的软件安装目录为${SYMLINK}"
# MySQL database port
readonly MYSQL_PORT=3306
echo "MySQL实例的端口为${MYSQL_PORT}"
# MySQL database directory.
readonly MYSQL_DATA_DIR="/data/mysql_${MYSQL_PORT}"
echo "MySQL的实例数据文件目录为${MYSQL_DATA_DIR}"

echo "准备创建MySQL实例"
cd $SYMLINK
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=${MYSQL_DATA_DIR}/data
echo "开始启动数据库实例,修改root用户密码,删除无效用户"
echo ""
cp /etc/my.cnf /data/mysql_${MYSQL_PORT}/my.cnf
echo "Startup MySQl Service:localhost_"${MYSQL_PORT}
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql_${MYSQL_PORT}/my.cnf &
echo ""

# MySQL root password
# 随机生成八位密码,作为MySQL的密码
for i in {1..10}
do
A=`head -c 500 /dev/urandom | tr -dc a-zA-Z | tr [a-z] [A-Z]|head -c 1`
B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 6`
C=`echo $RANDOM|cut -c 2`
echo $A$B$C > /home/mysql/.password_mysql
done
readonly MYSQL_ROOT_PASS=$A$B$C
echo "MySQL实例的root用户密码已经生成"
su - mysql <<EOF
/usr/local/mysql/bin/mysql -uroot -S /data/mysql_${MYSQL_PORT}/tmp/mysql.sock -e "select user,host from mysql.user;"
/usr/local/mysql/bin/mysqladmin -uroot -S /data/mysql_${MYSQL_PORT}/tmp/mysql.sock password "${MYSQL_ROOT_PASS}"
EOF
echo "MySQL的root用户密码已经修改"
echo ""
    
/usr/local/mysql/bin/mysql -uroot -p${MYSQL_ROOT_PASS} -S /data/mysql_${MYSQL_PORT}/tmp/mysql.sock -e "delete from mysql.user where user=‘‘;delete from mysql.user where user=‘root‘ and host!=‘localhost‘; FLUSH PRIVILEGES;"
/usr/local/mysql/bin/mysql -uroot -p${MYSQL_ROOT_PASS} -S /data/mysql_${MYSQL_PORT}/tmp/mysql.sock -e "delete from mysql.db where db=‘test‘ or db=‘test\\_%‘; FLUSH PRIVILEGES;"
echo "MySQL实例启动成功,初始用户环境修改完毕"
echo ""
/usr/local/mysql/bin/mysql -uroot -p${MYSQL_ROOT_PASS} -S /data/mysql_${MYSQL_PORT}/tmp/mysql.sock -e " show databases;"
/usr/local/mysql/bin/mysql -uroot -p${MYSQL_ROOT_PASS} -S /data/mysql_${MYSQL_PORT}/tmp/mysql.sock -e " select user,host from mysql.user;"

大家可以参考!

时间: 2024-10-27 07:38:35

MySQL数据库自动生成并修改随机root密码的脚本的相关文章

javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: 1 package me.gacl.demo; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import me.gacl.utils.JdbcU

MYSQL数据库自动本地/异地双备份/MYSQL增量备份

构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要工作.电 子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份.异地备份架构.其中Linux服务器的备份方案非常多,本文介绍一个大众化适用的解决方 案,通过编写Shell脚本来完成自动备份.本架构包括备份网站文件.数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份.异地备

Windows Server服务器端MySQL数据库自动备份

1.给root账户授权所有sql权限 grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 2.建立bat批处理文件 @echo off set path=%path%;D:\Program Files\MySQL\MySQL Server 5.5\bin set y=%date:~0,4% set m=%date:~5,2% set d=%d

mysql数据库导入导出及修改数据库名命令

概述 mysql 数据库导入导出,有两种方式 1)先导出SQL脚本,再导入(导入导出又分两种:1. 命令. 2. 工具.这里我们只介绍命令). 2)直接拷贝数据库文件(此方法不推荐). 一.mysql数据库导入 1.  已有数据库,可以直接用mysql命令 命令格式 mysql -u用户名 -p密码 数据库名 <  sql文件路径 示例:mysql -uroot -p12345678  test <  /root/test.sql 2.  创建新数据导入 mysql -uroot -p1234

Visio 2010对MySQL数据库反向工程生成ER数据库模型图

Visio 2010对MySQL数据库反向工程生成ER数据库模型图 1.首先需要从Mysql下载用于数据库链接的驱动ODBC 下载地址是:http://dev.mysql.com/downloads/connector/odbc/ 根据相应的版本下载即可,下载完后直接在本地安装 2.启动Visio2010(其他版本自学) 新建文档的时候在模板类别里面选"软件和数据库",如下图 然后会跳到"选择模板"里面,直接选"数据库模型图",如下图 3.在上面

(jdbc)取得数据库自动生成的主键方法

一些类,在前面的博客中有,就不重复了 public class Test2 { TestDAO t=new TestDAO(); /*前提是数据表的主键是自动增加的, *取得数据库自动生成的主键 * */ @Test public void testGetKeyValues() throws Exception{ Connection connection=null; PreparedStatement preparedStatement=null; try { String sql="inse

得到数据库自动生成的主键值

package com.atguigu.jdbc; import java.sql.Connection;import java.sql.Date;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement; import org.junit.Test; public class JDBCTest { /** * 得到

Intellij IDEA 根据数据库自动生成pojo和hbm

新建一个项目,每次写hibernate部分,就觉得pojo和hbm.xml部分很蛋疼.今天搜索了半天,终于知道如何根据数据库自动生成了. Intellij IDEA14创建maven时并不能勾选各种支持,都是后期添加 如图所示: 添加了hibernate之后,如图所以显示数据库 然后 在新界面中添加数据库驱动和数据库链接信息. 然后如图所示操作 选好数据库,选好包的位置,在下面勾上要生成的表对应的pojo,添加到sessionFactory,并且勾上为每一个pojo生成XML即可. 确定以后即生

javaWeb_JDBC_JDBC获取数据库自动生成的主键值

JDBC_JDBC获取数据库自动生成主键值 1.意义: 在操作比较复杂的数据库表以及相关信息的时候,我们需要获取一条记录中的主键值,以便于别的业务逻辑操作该条记录,那么这一个时候 如果是数据库自己生成主键值,那么我们就有必要获取这一个主键值. 2.实现: 使用重载的 prepareStatement(sql, flag)来生成 PreparedStatement 对象,并调用ResultSet rs = preparedStatement.getGeneratedKeys(); 在 Result