给/etc/my.cnf增加下面代码,可以将SQL查询超过1秒的SQL记录下来,以便于分析SQL语句及其效率
后把配置改为如下:
slow_query_log=1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
在mysql使用过程中可以使用 tail -f /var/log/mysql/mysql-slow.log 来查看时实变化情况
========================
mysql 错误日志在 /usr/local/mysql/var/localhost.localdomain.err
========================
解决方法:
1、赋权限 grant all privileges on test.* to 'sinykk'@'%' identified by 'sinykk';
2、关闭防火墙
如果还不行要请确认 on test.* 不要写成 *.*(这可能出错)
=====================================
重置 mysql root 密码
=====================================
1)以 系统root权限登陆
(2)停止MYSQL服务器:
#service mysqld stop
(3)跳过授权表执行MYSQL服务器:
# cd /usr/local/mysql/bin
#./mysqld_safe --skip-grant-tables --skip-networking &
(注:参数--skip-grant-tables为跳过授权表;--skip-networking为不监听TCP/IP连接)
(4)执行MYSQL客户端:
#./mysql
(5)使用mysql
数据库
mysql>use mysql;
(6)更新root密码
mysql>update user set password=password('新密码') where user='root';
(7)关闭mysql服务器,用正常方试起动
如果您用的不是我这个版本,可以在mysql的安装目录中找一个适合您当前版本的
mysqld_safe,后面加上--skip-grant-tables来跳过授权表,我书上所用的mysqld_safe版本为
"safe_mysqld"(其实写到这里我好像想起来了,在哪看到过说5.0以后把sqfe_mysqld改成mysqld_safe了
mysql->grant all on *.* to runjie@localhost identified by "406408" with grant option;
=======================
在my.cnf中设置的为 /var/lib/mysql/mysql.sock,可是PHP却一直找/tmp/mysql.sock
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /home/sinykk/test.php on line 5 Could not connect: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
老套路:google 错误信息,确定是/tmp/mysql.sock不存在
解决办法:
ps aux | grep mysql
root 1896 0.0 0.0 1872 548 ? S 16:00 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 1935 0.0 0.8 127852 17188 ? Sl 16:00 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 1936 0.0 0.0 3260 740 ? S 16:00 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
logic0 2287 0.0 0.0 3560 804 pts/0 S+ 16:24 0:00 grep mysql
可以发现里边有这样的一条信息--socket=/var/run/mysqld/mysqld.sock
直接建立链接:
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
然后service mysql stop
service mysql start
mysql -u root -p
OK了
至于原理,现在仍然不太明了。