今天接手一个在centos环境下安装的mysql。以前应该是安装了mysql,没有设置密码,导致外网可以随意没用密码访问。
1、开始使用/etc/init.d/mysql start启动之后,用mysql -u root -p无法登陆,报ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock',百度一番后,解决:
mysql -h 127.0.0.1 -u root -p
2、登陆进去后,使用以下语句修改密码:update mysql.user set password=password('sddfgwet4t') where user='root' and host='localhost';结果报错:ERROR 1036 (HY000): Table 'user' is read only
网上找了不少方法,结果是都无法解决问题,尤其是有的文章里面提到的,修改数据库文件权限,貌似找不到文件的存在,解决:
(1)、进入mysql命令,输入:SHOW VARIABLES LIKE '%datadir%';找到自己的mysql文件目录我的是:/data/mysql。
(2)、然后:chmod -R 0777 /data/mysql 修改mysql权限,也可以修改与mysql相同的权限。
(3)、进入mysql的bin目录,我的是: /usr/local/mysql/bin
(4)、运行:./mysqladmin -h 127.0.0.1 -u root -p flush-tables
(5)、进入mysql命令,重新输入update mysql.user set password=password('sddfgwet4t') where user='root' and host='localhost';
(6)、flush privileges;
备注:中途如果发现mysql无法用命令进入,可以尝试重启数据库试试:/etc/init.d/mysql restart