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

来源:互联网 发布:易语言json解析模块 编辑:程序博客网 时间:2024/05/29 14:12
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地址等,赋予相应操作的权限。

0 0