您的位置:首页 > 数据库 > MySQL

mysql压缩包如何使用及PoolableConnectionFactory 和Access denied for user 'testdb'@'localhost'问题的解决

2016-01-27 16:33 751 查看
mysql.zip绿色软件压缩包下载后,如何使用

1.解压缩,如这里的路径是在E:\BaiduYunDownload\mysql-5.6.28-winx64。解压缩后需要设置一下my.ini配置文件,设置客户端服务端默认字符集,基准路径、数据路径等

[mysql]

default-character-set=utf8

[mysqld]

# set basedir to your installation path

basedir=E:/BaiduYunDownload/mysql-5.6.28-winx64

#set datadir to the location of your data directory

datadir = E:/BaiduYunDownload/mysql-5.6.28-winx64/data

#set default charset

character-set-server = utf8

2.将bin路径加入到环境变量path后面,(不要覆盖前面内容)E:\BaiduYunDownload\mysql-5.6.28-winx64\bin ,中间用分号隔开

3.启动服务测试一下,在命令行中,如果没有将环境变量加入到path后面,需要在命令行中进入到解压目录下;如果加入到环境变量path中后,可以直接输入

mysqld --console

(关闭服务的指令如下) mysqladmin -u root shutdown

4.这里也可以吧mysql安装成服务,以让mysql自动启动 :mysqld --install

5.绿色版的mysql解压缩后,到这里假设你的mysql服务正常启动了,一般登录的话,root该种情形下是没有密码的,或者默认密码(但是不知道是啥),可以登录修改

mysql -u root -p //登录

这时如果你要更改或者是给root更改密码,可能会出现deny access ....root@localhost的提示,现在虽然是以root登录,但是没有输入密码,相当于

是以user权限表里的匿名用户登录的,需要你具有相应的权限才会让你进行操作。那么下面我们给root创建密码。

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。错误

这里可以用:

mysqld_safe--skip-grant-table //屏蔽权限,如果不识别mysqld_safe ,可以用mysql --skip-grant-table

//上面执行成功回启动一个线程,然后需要重新打开一个cmd的终端####################注意

//#新开一个终端

mysql -u root mysql

update user set password =password('123456') where user='root' //给root新添加的123456密码

flush privileges; //对于对于权限更改或者新添加的用户,需要对于权限刷新,同时之前开的终端不要关闭,不然会出错

\q //退出sql

这这里修改成功,登陆后可以看到相应的之前创建的数据库等内容,其他操作都可以。

6.新创建用户testdb(密码123456)和数据库test,并赋予权限于test数据库

 mysql> create database test; //已经存在的话就可以直接使用

 mysql> grant all on test.* to testdb identified by '123456'

  会自动创建用户testdb,这里创建的用户在访问是,可以

<property name="driverClassName" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/test" />

<property name="username" value="root" />

<property name="password" value="123456" />

因为创建的账户没有带localhost ,127.0.0.1, %等指示,因此访问的URL,可能会提示Access denied for user 'testdb'@'localhost' (using password: YES),

yes代表已经有密码,NO的话没有密码。此处带有YES说明可能是你创建的账户的权限方面的问题,如不能使用localhost,应该使用你本机的IP,

这通过select * from user;查看testdb用户的IP方面的权限是%,说明应该使用本机的IP,如192.168.1.150。如果查询root,则显示一个是

localhost,另外一个是127.0.0.1,第三个是 ::1,因此用root账户则可以使用jdbc:mysql://localhost:3306/test这样的url.

注意:如果driver可以向server发送数据包,但是却没有返回数据,可能是服务器端问题,也可能是这里的URL等内容写的有问题,就如我这里写成了

3308端口,而在sql那个地方命名是3306,因此在写web程序是总是can not create poolxxxFactory的内容,见8。

  一般的mysql默认的是本地主机是localhost,对应的IP地址就是127.0.0.1,所以你用你的IP地址登录会出错,如果你想用你的IP地址登录就要先进行授权用grant命令。

  mysql>grant all on *.* to root@202.116.39.2 identified by "123456"; 但是之前并没有给指定@,却不知为什么是本主机IP,加上@localhost则确实可以。

这里则是对于某一个IP地址下root用户赋予权限。

  

7.然后这里可以建表,执行增删改查等操作了。

8.错误:16:21:54,872 ERROR SqlExceptionHelper:144 - Cannot create PoolableConnectionFactory (Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)

16:21:56,891 ERROR SqlExceptionHelper:144 - Cannot create PoolableConnectionFactory (Communications link failure

这里大多时候是相应的URL或者这些参数写错了某一个地方,可以写个简单的JDBC连接测试一下,对于这里我是在SQLSERVER2005下遇到了该类似问题,mysql下面还是有144的这个错误,sqlserver2005是把密码给设置错了,mysql则是把URL的端口号给写错了。

9.Access denied for user 'testdb'@'localhost' (using password: YES),这是遇到的另一个问题,则是创建的用户对于URL中localhost的没有访问权限,创建用户的出的问题。可以参考6,带上@指定localhost,127.0.0.1,或者是IP地址等,赋予相应操作的权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: