①
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
前提,确认Mysql已经安装OK,是有mysql -uroot -p登录时报上述错误(系统环境本机虚拟机)
②
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
前提,初始化话数据库通过,在启动Mysql的时候上述错误
③
mysqld_safe mysqld from pid file /usr/local/mysql/data/Stone.pid ended
启动报上述错误
执行如下命令解决办法初始化数据库:
1./usr/local/mysql/scripts/mysql_install_db --user=mysql
2.查看数据目录/data,看存在mysql-bin.index,若要请删除掉它,它的影响不小
3.确定数据目录的权限
4.没有指定数据目录(在配置文件my.cnf中添加 datadir = /数据库目录)
5./etc/my.cnf文件中注释掉的skip-federated字段
6.在启动mysql试一下
④
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
密码输入错误
可以使用mysqladmin -uroot password "******"
或者
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
①,②解决办法:
修改my.cnf,添加
[client]
socket = /var/lib/mysql/mysql.sock
[mysqld]
socket = /var/lib/mysql/mysql.sock
注释掉skip-locking
添加:skip-external-locking
增加:datadir = /data 指定目录
保存退出,显示如下信息
/etc/init.d/mysqld start
Starting MySQL. SUCCESS!
关于Mysql的参数查看
mysql>show variables;
mysql>show variables like '%*****';
使用了skip-external-locking后,为使用MyISAMChk检查数据库或者修复、优化表,必须保证在此过程中MySQL服务器没有使用需要操作的表。
如果没有停止服务器,也至少需要先运行
mysqladmin flush-tables
命令,否则数据表可能出现异常。
注意事项
如果是多服务器环境,希望打开external locking特征,则注释掉这一行即可
# skip-external-locking
如果是单服务器环境,则将其禁用即可,使用如下语句
skip-external-locking
注意事项
在老版本的MySQL中,此参数的写法为:
skip-locking
如果在新版本MySQL配置中依然使用此写法,则可能出现:
[Warning] ‘�Cskip-locking’ is deprecated and will be removed in a future release. Please use ‘�Cskip-external-locking’ instead.
拓展
skip-grant-tables 不使用mysql数据库里的信息来进行访问控制(警告:这将允许用户任何用户去修改任何数据库)。
skip-host-cache 不使用高速缓存区来存放主机名和IP地址的对应关系。
skip-name-resovle 不把IP地址解析为主机名; 与访问控制(mysql.user数据表)有关的检查全部通过IP地址行进。
skip-networking 只允许通过一个套接字文件(Unix/Linux系统)或通过命名管道(Windows系统)进行本地连接,不允许ICP/IP连接;
这提高了安全性,但阻断了来自网络的外部连接和所有的Java客户程序(Java客户即使在本地连接里也使用TCP/IP)。
my.cnf参数说明
user = mysql mysqld服务启用帐号
port = 3306 (默认值) mysql服务启用的端口
socket=/var/lib/mysql/mysql.sock socket存放位置
basedir=/usr 主目录
datadir=/var/lib/mysql 数据库数据的存放目录
默认错误日志已经在/etc/init.d/mysqld设置了�Clog-error=/var/log/mysql.log
错误日志设置,它记录了当mysqld启动和停止时,已经服务器在运行过程中发生任何严重错误的相关信息。当数据库出现任何故障导致无法正常使用时,可以先查看此日志。
binlog_cache_size = 32K
二进制缓存日志大小,默认值为32K
long_query_time = 10
old_passwords=1
在MYSQL4.1版本之前,password函数生成的密码为16位,现在新版改进算法,生成的函数值变成41位,所以建议关闭旧版本密码格式,增强数据库的安全性
默认启用了innodb存储引擎
此存储引擎具有提交、回滚和崩溃恢复能力的事务安全机制
默认启用了BDB存储引擎
key_buffer_size = 8M
sort_buffer_size = 2M
排序查询操作所能使用的缓冲区大小 该参数对应的分配内存也是每连接独享
join_buffer_size = 2M
联合查询操作所能使用的缓冲区大小 该参数对应的分配内存也是每连接独享
read_buffer_size = 2M
读查询操作所能使用的缓冲区大小
max_connections = 100
最大连接数
open_files_limit = 1024
最大可以打开的文件数
back_log = 384
指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
table_cache = 1024
缓存表格数,与最大连接数有关
query_cache_size = 0M
query_cache_limit = 1M
query_cache_type=1
myisam_sort_buffer_size = 8M
thread_cache_size = 32
服务器线程缓存
tmp_table_size = 64M
mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。
max_allowed_packet = 16M
可以控制其通信缓冲区的最大长度
external-locking = FALSE
来避免外部锁,从MySQL 4.0开始,这个选项默认是打开的。在这之前,只有编译支持,也可以在启动文件命令添加:�Cskip-external-locking
thread_concurrency = 8
该参数取值为服务器逻辑CPU数量×2,在vps宿主机,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8
wait_timeout=28800
由连接到确定断线的时间,默认是28800(sec)将它改为20秒,此参数可以查看>mysql show processlist;查看的状态来决定