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/zh-tw/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磁碟操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件許可權修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29

發表回復

登錄後才能評論