写一个shell脚本 脚本输入参数:mysql端口号,mysql密码,mysql用户,mysql所在ip,MySQL的表,mysql表的列名 步骤一,登录mysql获取表的结构 步骤二,根据步骤一中获取的表结构,在内容中去掉参数中的列名定义。 步骤三,登录mysql,根据步骤二中修改后的表定义,重建这张表
时间: 2024-03-16 10:47:17 浏览: 16
好的,以下是脚本代码:
```bash
#!/bin/bash
# 获取输入参数
port=$1
password=$2
user=$3
ip=$4
table=$5
column=$6
# 步骤一:登录mysql获取表的结构
structure=$(mysql -h ${ip} -u ${user} -p${password} -P ${port} -e "desc ${table}")
# 步骤二:在内容中去掉参数中的列名定义
new_structure=$(echo "${structure}" | grep -v "${column}")
# 步骤三:根据步骤二中修改后的表定义,重建这张表
mysql -h ${ip} -u ${user} -p${password} -P ${port} -e "drop table if exists ${table}"
mysql -h ${ip} -u ${user} -p${password} -P ${port} -e "create table ${table} (${new_structure})"
```
注意:在执行脚本时,需要给予脚本执行权限,即执行 `chmod +x 脚本文件名`。另外,脚本中的 MySQL 登录信息需要根据实际情况进行修改。
相关问题
写一个shell脚本 脚本输入参数:mysql端口号,mysql密码,mysql所在ip,MySQL的表(多个表逗号间隔),mysql表的列名(多个列逗号间隔) 脚本要求:循环判断mysql是否可登录,当可登录删除mysql表的列,并切换到MySQL用户,重启数据库,并重建这些表
好的,我来为您编写这个脚本。
```bash
#!/bin/bash
# 检查参数是否正确
if [ $# -lt 5 ]; then
echo "Usage: $0 <mysql_port> <mysql_password> <mysql_host> <mysql_tables> <mysql_columns>"
exit 1
fi
# 获取参数
mysql_port=$1
mysql_password=$2
mysql_host=$3
mysql_tables=$4
mysql_columns=$5
# 循环判断mysql是否可登录
while ! mysqladmin ping -h$mysql_host -P$mysql_port -p$mysql_password --silent; do
echo "MySQL is not available, waiting for 5 seconds..."
sleep 5
done
# 删除mysql表的列
mysql -h$mysql_host -P$mysql_port -p$mysql_password << EOF
USE mysql;
ALTER TABLE $mysql_tables DROP COLUMN $mysql_columns;
EOF
# 切换到MySQL用户
sudo -u mysql /etc/init.d/mysql restart
# 重建这些表
mysql -h$mysql_host -P$mysql_port -p$mysql_password << EOF
USE mysql;
DROP TABLE IF EXISTS $mysql_tables;
CREATE TABLE $mysql_tables (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
EOF
echo "Done."
```
使用方法:
```bash
./script.sh <mysql_port> <mysql_password> <mysql_host> <mysql_tables> <mysql_columns>
```
其中,`<mysql_tables>` 和 `<mysql_columns>` 都可以使用逗号分隔多个表或列。例如:
```bash
./script.sh 3306 mypassword 127.0.0.1 db1.table1,db2.table2 column1,column2,column3
```
这个脚本会不断地检查 MySQL 是否可登录,如果不可登录,则会等待 5 秒钟后再次尝试。如果 MySQL 可登录,则会删除指定表的指定列,然后切换到 MySQL 用户,重启数据库,最后重新创建指定的表。
查看MySQL IP地址 主机名 端口号 版本 cpu总数 cpu核数 shell脚本
可以使用以下Shell脚本来查看MySQL的IP地址、主机名、端口号、版本、CPU总数、CPU核数:
```bash
#!/bin/bash
# 获取MySQL IP地址、主机名、端口号
mysql_ip=$(grep 'bind-address' /etc/mysql/mysql.conf.d/mysqld.cnf | awk '{print $2}')
mysql_hostname=$(hostname -f)
mysql_port=$(grep 'port' /etc/mysql/mysql.conf.d/mysqld.cnf | awk '{print $2}')
# 获取MySQL版本信息
mysql_version=$(mysql -V | awk '{print $5}')
# 获取CPU总数和CPU核数
cpu_total=$(grep -c 'processor' /proc/cpuinfo)
cpu_cores=$(grep -m1 'cpu cores' /proc/cpuinfo | awk '{print $4}')
# 输出MySQL信息和CPU信息
echo "MySQL IP地址: ${mysql_ip}"
echo "MySQL 主机名: ${mysql_hostname}"
echo "MySQL 端口号: ${mysql_port}"
echo "MySQL 版本号: ${mysql_version}"
echo "CPU 总数: ${cpu_total}"
echo "CPU 核数: ${cpu_cores}"
```
将此脚本保存为`mysql_info.sh`,并使用`chmod +x mysql_info.sh`命令将其设置为可执行文件。然后运行此脚本,将输出MySQL服务器的IP地址、主机名、端口号、版本、CPU总数和CPU核数。