admin管理员组

文章数量:1530517

问题:今天数据库备份迁移登入时报错:

分析:在默认情况下,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 启动即可解决(一劳永逸)

1.关闭mysql。如果正常关闭不了,可以kill掉端口号

2.在bin目录下启动Mysql

./mysqld_safe --defaults-file=/etc/myf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &

--defaults-file:指定配置文件的位置,这个选项必须是第一个。这个参数可以不指定,不指定则默认。

--basedir:指定MySQL的安装目录。

--datadir:指定数据目录的路径。

3.登入时报错

 解决忘记登入密码(ERROR:1045)问题,总体思路:配置myf使其免密码登录,重启服务,重新设置密码并刷新数据库,将之前的配置去掉重启MySQL。

1.配置myf使其免密码登录,每个人装的位置可能不同,mysql默认位置/etc/myf

执行命令vim /etc/myf

 skip_grant_tables:跳过登入权限验证。保存修改。

2.重启服务,在support-files目录下执行命令:./mysql.server restart

3.重新设置密码并刷新数据库:在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;

4.将之前的配置去掉,重启MySQL

重启(参照步骤2)。然后使用新密码进行登入。

登入成功。 

5.如果此时执行语句出错1820,则说明没有给root赋权限。 如果没有出错则可以忽略此步骤。

这个原因是我指定错了datadir的路径,默认这个路径是在mysql安装目录下data目录,而我之前搭建时,指定到了linux根目录/data/mysql,但是原默认的没有删除,所以指定到了原目录下,但是在原目录里的相关用户都没有赋权限,结果顺道记录一下这个问题。其实用对的datadir重新执行第2步(在bin目录下启动Mysql)就可以了。也不会这么麻烦。

给root用户复权

alter user 'root'@'localhost' identified by 'root' ;
flush privileges;

本地正常操作成功。可见因为我指定错了datadir,所以库里只有初始的几张表。

本文标签: 报错ErrormysqlSockettmp