新搭建的lnmp环境,默认的数据库权限是本地的,用户想用客户端连接是没有权限的,报如下的错误
SQLException: access denied for @'localhost' (using password: no)
想远程连接上去,就必须给MySQL用户授权。
操作方法
首先打开连接工具(我使用的是Xshell 5),输入以下命令
# mysql -u root -p
接着输入root的密码,然后使用use命令切换到mysql数据库,可以先查看需要更新的用户信息,本文以mysql_user为数据库用户,mysql_db为需要操作的数据库;如下
> user mysql; > select user,host from user; > update user set host = '%' where user = 'mysql_user'; > grant all privileges on mysql_db.* to mysql_user@'%'; > flush privileges;
做下简单的介绍,update语句是给有用户远程访问的权限,grant是给予用户所有数据库操作权限,最好不要忘记flush下数据库缓存,不然不能马上生效。
现在对grant命令做个介绍:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';
整个公式就是这样,当然对已经创建的用户identified by这部分是可以省略的,如果想赋予用户所有权限,则如上面的语句则可。
这里的权限到底有哪些呢,列出几个常用的
1、普通表的权限
select insert update delete create alter drop
2、视图的权限
create view show view
3、存储过程,方法
execute on procedure execute on function
4、当然也有所有的
all