wangweida 发表于 2019-9-28 15:48:14

版主请进:LNMPA+MySQL8.0使用 lnmp 命令无法创建数据库。

具体情况描述:环境LNMPA(lnmp1.6),使用lnmp vhost add 或 lnmp database add 时,添加完虚拟机后,数据库只创建了数据库用户名,但没有创建成功用户数据库。并在终端返回如下错误提示:ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '我的数据库密码''

在排查时发现对应lnmpa的操作脚本(/bin/lnmp)的410行与412行的下方没有获取 MySQL_Ver= 这个变量,导致后续脚本无法判断当前数据库版本。
而在执行后续的添加数据库脚本中确存在版本判断关系。因为执行脚本时MySQL_Ver这个变量是空的,所以不会执行对应8.0的脚本流,而错误的使用了旧版5.x的脚本流,导致数据库命令引入错误。

wangweida 发表于 2019-9-28 15:48:56

本帖最后由 wangweida 于 2019-9-28 15:55 编辑

我自己自行按lnmp脚本中的参数在补全后,现在操作正常。如下:
Check_DB()
{
    if [[ -s /usr/local/mariadb/bin/mysql && -s /usr/local/mariadb/bin/mysqld_safe && -s /etc/my.cnf ]]; then
      MySQL_Bin="/usr/local/mariadb/bin/mysql"
      MySQL_Ver=`/usr/local/mariadb/bin/mysql_config --version`#在lnmpa环境的/bin/lnmp脚本中对应添加此行;
    elif [[ -s /usr/local/mysql/bin/mysql && -s /usr/local/mysql/bin/mysqld_safe && -s /etc/my.cnf ]]; then
      MySQL_Bin="/usr/local/mysql/bin/mysql"      #在lnmpa环境的/bin/lnmp脚本中对应添加此行;
      MySQL_Ver=`/usr/local/mysql/bin/mysql_config --version`
    else
      MySQL_Bin="None"
    fi
}

不知道这样做是否正确,请版主指正
原因分析:应该是因为"/usr/local/mysql/bin/mysql_config --version"获取到了版本,但是没有参数来接收变量(lnmp命令的脚本内使用了MySQL_Ver来接收变量),而导致执行脚本否定上8.0版本的判断而执行了下方的命令语句,所以才提示出错的。

licess 发表于 2019-9-28 19:52:57

是的lnmpa和lamp的脚本上漏掉了这个版本获取语句
感谢反馈
页: [1]
查看完整版本: 版主请进:LNMPA+MySQL8.0使用 lnmp 命令无法创建数据库。