首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

使用MySQL遇到有关问题记录

2012-09-25 
使用MySQL遇到问题记录Q1. Ubuntu下从源安装MySQL后,用 mysql -u root 登录时,出现:ERROR 1045 (28000): A

使用MySQL遇到问题记录

Q1. Ubuntu下从源安装MySQL后,用 mysql -u root 登录时,出现:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

——2010-5-26已解决

原因:似乎这种安装方式不同于以前的惯例,默认用户root是有密码的,且具体密码不详。

解决 打开 /etc/mysql/debian.cnf ,可以看到包含如下内容(请忽略password的值):

user     = debian-sys-maintpassword = ******
??

? ?? 用该用户名和密码登录mysql:

mysql -u debian-sys-maint -p     

?

Q2.? Ubuntu下写表时遇到 ERROR 1036: Table 't_d_product' is read only

原因:数据库目录或文件的权限问题(由于移动cd /var/lib/mysql/数据库名称ls -l

?

2)將*.frm、*.MYD、*.MYI 设定权限及使用者mysql:

chmod  777  *.*chown  mysql.mysql  *.*ls -l
?

3)重启数据库:

/etc/init.d/mysql stop/etc/init.d/mysql start

——2010-5-28已解决

?

Q3.? 客户端连接时遇到 ERROR 1130: Host '...' is not allowed to connect to this MySQL server

原因:登录帐号不允许从远程登录。

解决

方法 1)改数据库mysql下的表user中的数据,依次执行:

mysql -u root -pmysql>use mysql;mysql>update user set host = ‘%’ where user =’test’;mysql>flush privileges;mysql>select ‘host’,'user’ from user where user=’test’;

?

方法 2)授权法:

如希望用户 test 使用密码 test 从任何主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'test' WITH GRANT OPTION;

?

如想允许用户 test 使用密码 test? 从ip为 192.168.1.22 的主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'test'@'192.168.1.22' IDENTIFIED BY ‘test’ WITH GRANT OPTION;

——2010-10-21已解决

?

Q4.? 基于SSH的应用,似乎在每天首次涉及到连接数据库的操作时都会出现如下异常,而之后的操作就没问题了:

?

ERROR [org.hibernate.util.JDBCExceptionReporter]
Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe

——2011-05已解决

原因:MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。

解决

调整数据库连接配置,增加超时、测试连接等配置

1)如果用的是 c3p0,加上以下配置:

   <!-- 数据库连接对象最大持有时间,这个timeout一定要大于MYSQL默认的28800(秒) -->      <property name="c3p0.timeout">30000</property>      <!-- 最大可缓存数据库语句对象 -->      <property name="c3p0.max_statements">50</property>      <!-- 每隔28000s测试连接是否可用 -->      <property name="c3p0.idle_test_period">28000</property>      <property name="c3p0.acquire_increment">1</property> 

?参考:解决java.net.SocketException: Broken pipe异常

【MySql异常备忘】mysql+hibernate出现java.net.SocketException MESSAGE: Broken pipe错误java.net.SocketException: Broken pipe /Mysql在经过8小时不使用后会自动关闭已打开的连接

2)网上大多是用 c3p0 连接池,我用的是 DHCP,看了下 org.apache.commons.dbcp.BasicDataSource 类,发现也有类似的属性,于是加上2项配置:

<bean id="dataSource" name="code">Timestamp currentTime = new Timestamp(new Date().getTime());
?

热点排行