为了部署应用程序,我需要创建一个用于基本用户身份验证的数据库。为了使过程自动化,我编写了一个MySQL批处理文件:
grant all on jetty.* to 'jetty'@'localhost' identified by 'jetty';
create database if not exists jetty;
use jetty;
create table if not exists users
(
id int unsigned not null auto_increment,
username varchar(100) not null,
password binary(60) not null,
primary key(id),
unique(username)
);
create table if not exists roles
(
id int unsigned not null auto_increment,
role varchar(100) not null,
primary key(id),
unique(role)
);
create table if not exists user_roles
(
user_id int unsigned not null,
role_id int unsigned not null,
unique(user_id, role_id),
index(user_id)
);
insert into users(username, password) values('jetty', $2a$10$YX3cYqn9nHmCOmPZBHXrQ.2nxrktB3CRYG8tXmBmmWvrDKU8uwRSe');
我第一次这样做,所以我很确定有些事情我可能做对了。用一个用户填充users
表实际上是个好主意吗?要登录我的应用程序,需要有一些帐户,但我还不太确定。
另一件令我烦恼的事是grant
声明。我想知道grant all
是否可能不够限制。
另外,我应该在我要创建的每张桌子上检查if not exists
吗?
是否有关于批处理脚本的最佳实践?
答案 0 :(得分:1)
请确保在DROP
这些表之前进行备份。