请问,linux下mysql创建用户,具有所有数据库所有表并且具有所有操作的权限,并且可远程登录操作 200

我以root身份登录后执行grantallprivilegeson*.*totest1@'%'identifiedby'tests';出现QueryOK,0rowsaff... 我以root身份登录后执行
grant all privileges on *.* to test1@'%' identified by 'tests';
出现
Query OK, 0 rows affected (0.00 sec)
然后我退出登录就会报
ERROR 1045 (28000): Access denied for user 'test1'@'localhost'
请问这是何种缘故?
希望有经验的开发人员或者DBA帮我解决下。因为这是涉及到商业环境搭建。希望能给一个比较靠谱的解决方案。
高分求。不胜感激~~
展开
 我来答
xiongenlai
2012-06-10 · TA获得超过186个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:130万
展开全部
可以找个免费/开源的客户端来使用,例如HeidiSQL或者Navicat Lite,你搜一下就能找到。
安装后在里面设置好连接(主要是填一下服务器地址、用户名及帐号)就能可以使用了(服务器端可能也需要设置赋予权限,不然就会出现类似“ERROR 1045 (28000): Access denied for user 'test1'@'localhost”这样的错误,如出现错误则见参考资料)。
默认root用户就具有所有的权限,你可以新建一个用户,使它拥有所有的权限,还可以指定从什么地方登陆。权限划分可以很细的,可以精确到table,像select这种简单的查看功能命令都可以限定。具体命令像create,grant等等可以找本书看看。用户访问权限:

mysql.user 全局层级权限(global privileges)
db 数据库层级(database-specific privileges)
tables_priv 表层级(table-secific privileges)
columns_priv 列层级(column-secific privileges)

新建用户
create user 'test1'@'localhost/127.0.0.1' identified by '123',
->'test2'@'%' identified by '123';
语法: create user 'user'[@'host'] [identified by [password] 'password']

删除用户
drop user 'test1'@'localhost','test1'@'%','test2'@'localhost';
语法: drop user 'user'@'host'

撤销用户权限
revoke all on *.* from 'test'@'localhost';

更改用户名
rename user 'test'@'localhost' to 'test1'@'%';

用户授权
grant all privileges on *.*/dbname.*/dbname.tablename/ to 'test'@'localhost' identified by '123'
->required ssl with grant option;
grant select,update(field1,field2) on dbname.tablename to 'test1'@'%' identified by '123'
->required ssl with grant option;

搜索得到一位前辈的解决办法如下:
首先,在连接jdbc驱动的时候,按如下语句:
String connstr ="jdbc:mysql://localhost:3306/tp_db?&useUnicode=true&characterEncoding=8859_1";
然后,输入中文时转换时,按如下语句:
sql=new String(sql.getBytes("iso8859-1"));
最后,输出中文时转换,按如下语句:
String bookname=new String(rs.getString("bookname").getBytes("iso8859-1"),"GBK或者GB2312");

注:查看显示结果应在中文支持的环境下,我的配置为:Linux7.3+Tomcat4.0+Mysql3.22 作服务器端,IE6或Netscape作浏览器。
whbttst
2017-10-25 · TA获得超过787个赞
知道小有建树答主
回答量:953
采纳率:94%
帮助的人:456万
展开全部

出现这个情况需要注意2点:

1、当前虽然进行用户授权了,但是没有对权限表进行刷新,这样权限操作不会生效,请在mysql命令行执行如下命令

flush privileges;

2、通过错误的显示来看,test1用户本地权限的访问没有开通,可以创建test1用户localhost访问的权限并执行第1点的刷权限命令;

注:如果第2点你不想添加,可以通过mysql客户端指定IP访问mysql server,例如:

mysql  -h ip  -uroot  -ppassword
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyer_hlc
2012-06-21
知道答主
回答量:2
采纳率:0%
帮助的人:2.9万
展开全部
mysql -utest1 -p --protocal=tcp 这样试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sadnet
2012-06-10 · TA获得超过681个赞
知道小有建树答主
回答量:468
采纳率:66%
帮助的人:377万
展开全部
语句看上去没有错啊,你grant后用 flush privileges;

另外,可以用select命令到mysql库里面的user表中看看test1这个用户设置是否正确,包括host字段的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jjwan22327
2012-06-10
知道答主
回答量:23
采纳率:0%
帮助的人:6.4万
展开全部
grant all privileges on *.* to test1@'%' identified by 'tests';
上面的语句回车后输入下面的语句,然后回车,再退出
flush privileges;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑束负9
2012-06-10
知道答主
回答量:41
采纳率:0%
帮助的人:15万
展开全部
我们都是菜菜你不应该把这种问题方到这里提问,还搞这么多分在这里诱惑人是何居心??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式