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

本文目录一览:

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\]/a\lower_case_table_names=1’ /etc/my.cnf

sed -i ‘/\[mysqld\]/a\skip-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’:’\r\n’, 则覆盖他自己的’\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 下。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/242232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:47
下一篇 2024-12-12 12:47

相关推荐

  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • Python脚本控制其他软件

    Python作为一种简单易学、功能强大的脚本语言,具有广泛的应用领域,在自动化测试、Web开发、数据挖掘等领域都得到了广泛的应用。其中,Python脚本控制其他软件也是Python…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Shell脚本与Python脚本的区别

    本文将从多个方面对Shell脚本与Python脚本的区别做详细的阐述。 一、语法差异 Shell脚本和Python脚本的语法存在明显差异。 Shell脚本是一种基于字符命令行的语言…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • Python代码实现回文数最少操作次数

    本文将介绍如何使用Python解决一道经典的回文数问题:给定一个数n,按照一定规则对它进行若干次操作,使得n成为回文数,求最少的操作次数。 一、问题分析 首先,我们需要了解回文数的…

    编程 2025-04-29
  • Python磁盘操作全方位解析

    本篇文章将从多个方面对Python磁盘操作进行详细阐述,包括文件读写、文件夹创建、删除、文件搜索与遍历、文件重命名、移动、复制、文件权限修改等常用操作。 一、文件读写操作 文件读写…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29

发表回复

登录后才能评论