2022-07-06 mysql报错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysq
问题:今天数据库备份迁移登入时报错:
分析:在默认情况下,Mysql安装以后会在/tmp目录下生成一个mysql.sock文件,如该文件丢失则Mysql将不能够正常启动对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用。
第一种解决:直接指定地址端口号登入
在mysql的bin目录下执行:
./mysql -h127.0.0.1 -P3307 -uroot -p
说明:-h 地址 -P 端口号 -u 用户名 -p 密码
执行后登入成功。
第二种解决:重新启动Mysql,在support-files目录下执行命令:./mysql.server restart。如果启动不了请尝试第三种。
第三种解决:使用mysqld_safe 启动即可解决(一劳永逸)
关闭mysql。如果正常关闭不了,可以kill掉端口号
在bin目录下启动Mysql
./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &
--defaults-file:指定配置文件的位置,这个选项必须是第一个。这个参数可以不指定,不指定则默认。
--basedir:指定MySQL的安装目录。
--datadir:指定数据目录的路径。
登入时报错
解决忘记登入密码(ERROR:1045)问题,总体思路:配置my.cnf使其免密码登录,重启服务,重新设置密码并刷新数据库,将之前的配置去掉重启MySQL。
配置my.cnf使其免密码登录,每个人装的位置可能不同,mysql默认位置/etc/my.cnf
执行命令vim /etc/my.cnf
skip_grant_tables:跳过登入权限验证。保存修改。
重启服务,在support-files目录下执行命令:./mysql.server restart
重新设置密码并刷新数据库:在mysql的bin目录下执行:./mysql -uroot -p,输入密码时直接回车即可进入。进入mysql时依次执行:
① use mysql;
② MySQL5.7.9版本后执行:
update user set authentication_string="新密码" where user="root"
MySQL5.7.9版本前执行:
update user set password=password("新密码") where user="root"
③ flush privileges;
④ quit;
将之前的配置去掉,重启MySQL
重启(参照步骤2)。然后使用新密码进行登入。
登入成功。
如果此时执行语句出错1820,则说明没有给root赋权限。 如果没有出错则可以忽略此步骤。
这个原因是我指定错了datadir的路径,默认这个路径是在mysql安装目录下data目录,而我之前搭建时,指定到了linux根目录/data/mysql,但是原默认的没有删除,所以指定到了原目录下,但是在原目录里的相关用户都没有赋权限,结果顺道记录一下这个问题。其实用对的datadir重新执行第2步(在bin目录下启动Mysql)就可以了。也不会这么麻烦。
给root用户复权
alter user 'root'@'localhost' identified by 'root' ;flush privileges;
本地正常操作成功。可见因为我指定错了datadir,所以库里只有初始的几张表。
来源地址:https://blog.csdn.net/weixin_34942299/article/details/125641254
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341