shell下为什么这样 登录mysql不成功?

bandaoyu 2018-11-26 10:50:46
#!/bin/sh
mysql -uroot -phopeview-db
这样登录ok

#!/bin/sh
LOGIN=`mysql -uroot -phopeview-db`
${LOGIN}

这样执行脚本,脚本就卡住了,不知道为何?
...全文
452 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bandaoyu 2018-11-30
  • 打赏
  • 举报
回复
引用 10 楼 柴米油盐酱醋0 的回复:
[quote=引用 9 楼 bandaoyu 的回复:] [quote=引用 8 楼 柴米油盐酱醋0 的回复:] 至于你的说的长连接短连接是相对于JDBC这类连接方式说的吧。 这个脚本跑在操作系统上,命令执行完毕后,即会数据开数据库连接。
确定执行完毕后会断开吗[/quote] 我测试过这个脚本,执行完后是会马上断开连接的。[/quote]好!谢谢你
  • 打赏
  • 举报
回复
引用 9 楼 bandaoyu 的回复:
[quote=引用 8 楼 柴米油盐酱醋0 的回复:] 至于你的说的长连接短连接是相对于JDBC这类连接方式说的吧。 这个脚本跑在操作系统上,命令执行完毕后,即会数据开数据库连接。
确定执行完毕后会断开吗[/quote] 我测试过这个脚本,执行完后是会马上断开连接的。
bandaoyu 2018-11-28
  • 打赏
  • 举报
回复
引用 8 楼 柴米油盐酱醋0 的回复:
至于你的说的长连接短连接是相对于JDBC这类连接方式说的吧。 这个脚本跑在操作系统上,命令执行完毕后,即会数据开数据库连接。
确定执行完毕后会断开吗
  • 打赏
  • 举报
回复
引用 7 楼 bandaoyu 的回复:
[quote=引用 5 楼 柴米油盐酱醋0 的回复:]
我在别处看到这个答案,觉得这个比较靠谱,不过有个疑问,就是因为我是定时执行这个检查脚本,而且我数据库参数的链接已经设置为长链接,那么我每次执行一次这个:mysql -uroot -p123456 -e "select version();" 就会创建一条链接,那么这个链接会什么时候自动断开销毁?不然的话 定时执行检查,资源会被消化完的。 别处的答案: 4:使用客户端登录mysql执行命令,查看返回结果测试服务是否启动,理论上此方法最可靠。 [root@localhost baby]# cat check_db_client.sh #!/bin/bash #written by linuxidc@2015-10-15 mysql -uroot -p123456 -e "select version();" &>/dev/null if [ $? -ne 0 ] then /etc/init.d/mysqld start else echo "MySQL is running" fi 执行结果如下: [root@localhost baby]# sh check_db_client.sh MySQL is running[/quote] 又学到新知识了,这个脚本写的很好,这样就可以很正确的判断数据库是否正在运行了。 那个MYSQLADMIN ..... PING 这个参数是官方的,显示数据库是否在线,背后原理不太清楚;如果不是长期用它监测数据库状态,也不会发现在数据库压力特别大的时候,它返回的值不准(可能它认为5秒或10秒连不到数据库就认为数据库宕了,其实这样返回也对,5秒钟都连不到数据,数据库是肯定出问题了) 至于你的说的长连接短连接是相对于JDBC这类连接方式说的吧。 这个脚本跑在操作系统上,命令执行完毕后,即会数据开数据库连接。
bandaoyu 2018-11-28
  • 打赏
  • 举报
回复
引用 5 楼 柴米油盐酱醋0 的回复:
我在别处看到这个答案,觉得这个比较靠谱,不过有个疑问,就是因为我是定时执行这个检查脚本,而且我数据库参数的链接已经设置为长链接,那么我每次执行一次这个:mysql -uroot -p123456 -e "select version();" 就会创建一条链接,那么这个链接会什么时候自动断开销毁?不然的话 定时执行检查,资源会被消化完的。 别处的答案: 4:使用客户端登录mysql执行命令,查看返回结果测试服务是否启动,理论上此方法最可靠。 [root@localhost baby]# cat check_db_client.sh #!/bin/bash #written by linuxidc@2015-10-15 mysql -uroot -p123456 -e "select version();" &>/dev/null if [ $? -ne 0 ] then /etc/init.d/mysqld start else echo "MySQL is running" fi 执行结果如下: [root@localhost baby]# sh check_db_client.sh MySQL is running
bandaoyu 2018-11-28
  • 打赏
  • 举报
回复
引用 5 楼 柴米油盐酱醋0 的回复:
#!/bin/sh LOGIN=`mysqladmin -uroot -p123456 -h127.0.0.1 -P3306 ping 2>1|wc -l` if [ ${LOGIN} -eq 0 ]; then echo "include!" >> ./login.txt else echo "not include" >>./login.txt fi echo ${LOGIN} >> ./login.txt 主要是用mysqladmin -uxx -pxxx ping 这个PING参数能够返回数据库是否在线; 但它返回有时候不准,比较数据库压力非常大的时候,登录数据库延迟大,它有可能返回数据库不在线。
你这个命令能讲解一下吗? 这个ping能判断数库在线指的是什么? 是进程还在运行还是? 因为我发现有时候即使数据库进程还在运行也无法使用,比如内存不足了,无法建立连接等
  • 打赏
  • 举报
回复
引用 4 楼 bandaoyu 的回复:
[quote=引用 3 楼 柴米油盐酱醋0 的回复:] ]啊啊?你想要结果显示什么?
实际我是想判断登陆的结果,也就是通过脚本登陆查看数据库是否正常,通过执行`mysql -uintr-user -phopeview-db -h127.0.0.1 -P8066`后的结果存在LOGIN,在判断LOGIN是否是登陆成功返回的结果,比如每次成功都返回“mysql >"就知道数据库是不是工作正常了,但是每次都是 卡在:LOGIN=`mysql -uintr-user -phopeview-db -h127.0.0.1 -P8066` #!/bin/sh LOGIN=`mysql -uintr-user -phopeview-db -h127.0.0.1 -P8066` if [ ${LOGIN}=~ "mysql>" ]; then echo "include!" >> ./login.txt else echo "not include" >>./login.txt fi echo ${LOGIN} >> ./login.txt [/quote] 你再看着修改一下吧 #!/bin/sh LOGIN=`mysqladmin -uroot -p123456 -h127.0.0.1 -P3306 ping 2>1|wc -l` if [ ${LOGIN} -eq 0 ]; then echo "include!" >> ./login.txt else echo "not include" >>./login.txt fi echo ${LOGIN} >> ./login.txt 主要是用mysqladmin -uxx -pxxx ping 这个PING参数能够返回数据库是否在线; 但它返回有时候不准,比较数据库压力非常大的时候,登录数据库延迟大,它有可能返回数据库不在线。
bandaoyu 2018-11-27
  • 打赏
  • 举报
回复
引用 3 楼 柴米油盐酱醋0 的回复:
]啊啊?你想要结果显示什么?


实际我是想判断登陆的结果,也就是通过脚本登陆查看数据库是否正常,通过执行`mysql -uintr-user -phopeview-db -h127.0.0.1 -P8066`后的结果存在LOGIN,在判断LOGIN是否是登陆成功返回的结果,比如每次成功都返回“mysql >"就知道数据库是不是工作正常了,但是每次都是
卡在:LOGIN=`mysql -uintr-user -phopeview-db -h127.0.0.1 -P8066`

#!/bin/sh
LOGIN=`mysql -uintr-user -phopeview-db -h127.0.0.1 -P8066`

if [ ${LOGIN}=~ "mysql>" ]; then
echo "include!" >> ./login.txt
else
echo "not include" >>./login.txt
fi

echo ${LOGIN} >> ./login.txt
  • 打赏
  • 举报
回复
引用 2 楼 bandaoyu 的回复:
[quote=引用 1 楼 柴米油盐酱醋0 的回复:]
LOGIN=`mysql -uroot -phopeview-db`
改成
LOGIN='mysql -uroot -phopeview-db'

你那样写LOGIN等于这个命令的结果值。
就是想要的结果值,把`mysql -uroot -phopeview-db` 改成`uname` 就正常,所以就会卡在了`mysql -uroot -phopeview-db` 执行这句话,不知道为什么[/quote]啊啊?你想要结果显示什么?
bandaoyu 2018-11-26
  • 打赏
  • 举报
回复
引用 1 楼 柴米油盐酱醋0 的回复:
LOGIN=`mysql -uroot -phopeview-db`
改成
LOGIN='mysql -uroot -phopeview-db'

你那样写LOGIN等于这个命令的结果值。
就是想要的结果值,把`mysql -uroot -phopeview-db` 改成`uname` 就正常,所以就会卡在了`mysql -uroot -phopeview-db` 执行这句话,不知道为什么
  • 打赏
  • 举报
回复
LOGIN=`mysql -uroot -phopeview-db` 改成 LOGIN='mysql -uroot -phopeview-db' 你那样写LOGIN等于这个命令的结果值。

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧