天天看點

【Linux】通過shell腳本對mysql的增删改查以及my.cnf的配置

目錄

  • shell操作mysql
    • 1.擷取mysql預設密碼
    • 2.修改my.cnf檔案
    • 3.shell建立mysql資料庫
    • 4.shell建立mysql表
    • 5.shell添加資料
    • 6.shell删除資料
    • 7.shell修改資料
    • 8.shell查找資料
    • 9.shell修改資料庫密碼

shell操作mysql

1.擷取mysql預設密碼

新安裝的mysql,密碼是預設密碼

#!/bin/bash
# STRING:擷取mysql預設密碼的一段字元串
# 	例如:A temporary password is generated for root@localhost: xxxxxx
# PASSWORD:将擷取到的STRING進行截取,擷取localhost:右邊的預設密碼
# shellcheck disable=SC2006
STRING=`grep "temporary password" /var/log/mysqld.log`
PASSWORD=${STRING#*localhost: }
           

若已經修改了密碼的

#!/bin/bash
# shellcheck disable=SC2006
PASSWORD="你的密碼"
           

2.修改my.cnf檔案

原因:在mysq5.6還是5.7以上,使用如下的shell腳本進行連接配接,會提示在指令行輸入密碼不安全。

mysql -u root -pPASSWORD -e "xxxxxx"
           

解決方法:使用sed指令在my.cnf檔案中添加如下字段

[client]
user=root
password=xxxxxx
           

shell腳本:

# 我的my.cnf檔案在/etc/my.cnf下,不相同的可以自己去找找
# sed -i '第幾行 添加的内容' 指定的檔案
sed -i '1i [client]' /etc/my.cnf
sed -i '2i user=root' /etc/my.cnf
sed -i '3i password=xxxxxx' /etc/my.cnf
           

3.shell建立mysql資料庫

# SQL語句
DATABASE_SQL="CREATE DATABASE IF NOT EXISTS test"
# mysql -u 使用者名 -e "sql語句"
# 因為在my.cnf中配置了密碼,是以不用寫密碼了
mysql -u root -e "${DATABASE_SQL}"
           

4.shell建立mysql表

# sql語句
TEST_SQL="CREATE TABLE IF NOT EXISTS test ( id varchar(20) NOT NULL, text varchar(20) NOT NULL) ENGINE=InnoDB"
# mysql -u 使用者名 -D "資料庫名" -e "sql語句"
mysql -u root -D "test" -e "${TEST_SQL}"
           

5.shell添加資料

# sql語句
INSERT_SQL="insert into test values ('123', 'test')"
mysql -u root -D "test" -e "${INSERT_SQL}"
           

6.shell删除資料

DELETE_SQL="delete from test where id='123'"
mysql -u root -D "test" -e "${DELETE_SQL}"
           

7.shell修改資料

UPDATE_SQL="update test set text='你好' where id='123'"
mysql -u root -D "test" -e "${UPDATE_SQL}"
           

8.shell查找資料

SELECT_SQL="select id, text from test where id='123'"
mysql -u root -D "test" -e "${SELECT_SQL}"
           

9.shell修改資料庫密碼

# mysql5.7之前
SQL="update mysql set password=password("新密碼") where user='root'"
# mysql5.7及以後
SQL="update mysql set authentication_string=password("新密碼") where user='root'"

# flush privileges:重新整理
mysql -u root -D "mysql" -e "${SQL};flush privileges"