首页 > 编程知识 正文

sh脚本操作mysql数据库,sh脚本编写

时间:2024-03-07 18:23:45 阅读:332334 作者:NPKM

本文目录一览:

mysql是用的.sh写的脚本,执行后提示没有命令

在Shell中执行mysql的脚本,这里介绍比较容易使用的一种方法

首先写好sql的脚本,后缀为.sql,比如

sql_file.sql:内容如下

#这是SQL的脚本

create table if not exists test_sql(id int(10),name varchar(20));

insert into test_sql values(1,'正餐');

select * from test_sql;

很简单的创建、插入、查询

之后shell的脚本,内容如下

#!/bin/bash #这是执行SQL的脚本,传入数据库表,和SQL文件名即可

name=$1

file_name=$2

cd /opt/lampp/bin ./mysql -uroot -p123456 EOF

use ${name};

source ${file_name};

EOF

./mysql -uroot -p123456是进入mysql的命令,前面的路径可以改成自己的绝对路径

EOF EOF 中间可以写出任意的mysql脚本

其中,如果要执行某个.sql的命令,直接用 source 脚本.sql 即可执行该脚本上面的命令,这里使用的是source sql_file.sql

此外,如果在mysql中需要执行shell脚本

可以在EOF中 ./mysql -uroot -p123456EOF ! sh shell.sh EOF

前面加上 ! +linux中执行的shell命令即可

Linux 怎么shell脚本定时备份mysql数据库

每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据;

需求:

1,每天4点备份mysql数据;

2,为节省空间,删除超过3个月的所有备份数据;

3,删除超过7天的备份数据,保留3个月里的

10号

20号

30号的备份数据;

#创建shell文件

vim

backup_mysql.sh

mysqldump

-uroot

-p123456

--all-databases

/data/dbdata/mysqlbak/`date

+%Y%m%d`.sql

find

/data/dbdata/mysqlbak/

-mtime

+7

-name

'*[1-9].sql'

-exec

rm

-rf

{}

;

find

/data/dbdata/mysqlbak/

-mtime

+92

-name

'*.sql'

-exec

rm

-rf

{}

;

#创建定时任务

crontab

–e

4

*

*

*

/data/dbdata/backup_mysql.sh

2、Mysql自动安装8.0Shell脚本

如果您觉得文本对您有帮助,请打赏,谢谢。

新建执行脚本:mysql_install.sh,并添加执行权限

#!/bin/bash

#zhouyihua V0.1 2021.07.08

#For centos 7.0 8.0

#v 0.2

# add DNS

echo "----------  Add DNS  --------"

echo "nameserver 8.8.8.8" /etc/resolv.conf

#stop firewall

systemctl stop firewalld

if [ $? -ne 0 ]; then

    echo "Firewall stop failed"

else

    echo "Firewall stop success"

fi

#download mysql yum source

wget

#install mysql yum source

rpm -ivh mysql80-community-release-el7-3.noarch.rpm

#enable 5.7

#sed -i '21s/enabled=0/enabled=1/g' /etc/yum.repos.d/mysql-community.repo

#sed -i '21s/enabled=0/enabled=1/g' /etc/yum.repos.d/mysql-community.repo

#disable 8.0

#sed -i '28s/enabled=1/enabled=0/g' /etc/yum.repos.d/mysql-community.repo

#install mysql

yum -y module disable mysql

yum -y remove mariadb-libs

yum install -y mysql-community-server

#config mysql

echo "-----------  Config my.cnf  ----------"

sed -i '/[mysqld]/alower_case_table_names=1' /etc/my.cnf

sed -i '/[mysqld]/askip-grant-tables' /etc/my.cnf

#start mysql

echo "----------  Starting mysql service  ----------"

systemctl start mysqld.service

mysql -uroot -p123456  EOF

    use mysql;

    update user set authentication_string='' where user='root' ;

    flush privileges;

    ALTER user 'root'@'localhost' IDENTIFIED BY '?CZJh8JWxvH';

EOF

echo "----------  Annotation skip grant tables in my.cnf    ----------"

sed -i 's/skip-grant-tables/#skip-grant-tables/g' /etc/my.cnf

echo "----------  Restart mysql service  ----------"

systemctl restart mysqld.service

echo "----------  Grant all privileges  ----------"

mysql -uroot -p'Oracle1234!@#$'    --connect-expired-password -e "alter user 'root'@'localhost' identified by 'Oracle1234!@#$';"

mysql -u root -p'Oracle1234!@#$'  EOF

    use mysql;

    CREATE USER 'maxkey'@'%' IDENTIFIED BY 'Oracle1234!@#$';

    GRANT ALL ON *.* TO 'maxkey'@'%';

EOF

参考:

先设置grant_skip_tables

  1.  use mysql

  2. update user set authentication_string='' where user='root' ;    如果这个字段有值,先置为空

  3. flush privileges    刷新权限表

  4.ALTER user 'root'@'localhost' IDENTIFIED BY 'Tianya1234'    修改root 密码

参考:

如何在mysql shell命令中执行sql命令行

本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。

其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。

比如我导入 100W 行示例数据到表 ytt.tl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。

使用这两个工具之前,必须得临时开启 local_infile 选项。1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。

我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':'rn', 则覆盖他自己的'n'。

选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2. imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。