通过userdata在aws ec2实例上安装Mysql

通过userdata在aws ec2实例上安装Mysql,mysql,bash,amazon-web-services,automation,user-data,Mysql,Bash,Amazon Web Services,Automation,User Data,我在ec2实例中将此脚本作为userdata提供,以安装和设置mysql。代码可以手动运行,但当作为userdata提供给ec2实例时,它不会创建数据库或用户 #!/bin/bash sudo yum -y update sudo yum -y install aspell aspell-en httpd24 mysql mysql-server php56 php56-cli php56-gd php56-intl php56-mbstring php56-mysqlnd php56-opca

我在ec2实例中将此脚本作为userdata提供,以安装和设置mysql。代码可以手动运行,但当作为userdata提供给ec2实例时,它不会创建数据库或用户

#!/bin/bash
sudo yum -y update
sudo yum -y install aspell aspell-en httpd24 mysql mysql-server php56 php56-cli php56-gd php56-intl php56-mbstring php56-mysqlnd php56-opcache php56-pdo php56-soap php56-xml php56-xmlrpc php56-pspell --skip-broken
sudo yum list installed
sudo /sbin/chkconfig httpd on
sudo /sbin/chkconfig mysqld on  
sudo /sbin/service httpd start
sudo /sbin/service mysqld start
sudo mysqladmin -u root password '123a'
sudo mysql -u root -p123a
CREATE DATABASE db;
CREATE USER '1234'@'localhost' IDENTIFIED BY '123a';
GRANT FILE ON *.* TO '1234'@'localhost';
FLUSH PRIVILEGES;

Mysql版本:5.7.28

您的grant命令不正确,现在它只是没有密码

sudo mysql -u root -p123a -e  "CREATE DATABASE db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;use db;create user 'db'@'localhost' identified by '123a';  grant all on testdb.* to 'db';GRANT ALL ON db.* TO ' db '@'localhost';GRANT ALL ON db.* TO ' db '@'%';FLUSH PRIVILEGES;"

您需要一个-e as选项和双引号中的sql命令,请参阅已更改的答案我已尝试使用-e,但它不起作用。我已经更新了代码,但问题仍然存在。就好像我无法通过ec2实例用户数据进入mysql控制台一样。当我手动运行该命令时,它可以工作。您的命令不使用-e,您还需要一个数据库作为查询的bas。请参阅更改的答案,也不要使用cariage Return。如果有任何查询问题,我也添加了mysql版本。我已经尝试了很多方法,但仍然无法找到答案,因此,请在mysql workbench中尝试hole查询