本文目錄一覽:
- 1、mysql是用的.sh寫的腳本,執行後提示沒有命令
- 2、Linux 怎麼shell腳本定時備份mysql資料庫
- 3、2、Mysql自動安裝8.0Shell腳本
- 4、如何在mysql shell命令中執行sql命令行
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