我在 CentOS 7.2 实例上通过二进制文件安装 MySql 时遇到 MySql 5.7 版本问题。
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar zxvf /path/to/mysql-VERSION-OS.tar.gz
ln -s full-path-to-mysql-VERSION-OS mysql
cd mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql ( it will generate password for root user)
bin/mysqld --user=mysql ( It will start the mysql)
- 打开另一个 Mysql 会话。转到 /usr/local/mysql,然后输入之前记录的 root 密码
/usr/local/bin/mysql -u root -p -h 127.0.0.1
- 安装 mysql 后,我创建一个数据库“databaseDB”
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxx’;
CREATE USER mysql;
SET PASSWORD FOR mysql = PASSWORD ('yyyyy');
create database databaseDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
grant all on databaseDB.* to mysql@'%';
grant all on looker_tmp.* to mysql@'%';
flush privileges;
exit;
但是,当我尝试以 root 用户身份连接数据库时:
/usr/local/mysql/bin/mysql -u root -p
或 mysql 用户:
/usr/local/mysql/bin/mysql -u mysql -p
我收到以下套接字错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
我确认数据库正在运行:
[root@looker-mysql-automation-484606751-1-524514057 ~]# ps aux | grep mysql
root 18778 0.0 0.0 110528 12828 ? Ss 02:47 0:00 /sbin/dhclient -H looker-mysql-automation-484606751-1-524514057 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid eth0
mysql 80767 0.0 0.6 1183088 184448 pts/0 Sl+ 13:21 0:04 /usr/local/mysql/bin/mysqld --user=mysql
root 87503 0.0 0.0 112652 972 pts/3 S+ 15:24 0:00 grep --color=auto mysql
我可以使用以下方法连接到数据库:
/usr/local/mysql/bin/mysql -u root -p -h 127.0.0.1
有什么想法吗?谢谢
答案1
您的 MySQL 实例只监听本地接口,没有unix套接字我们大多数时间都习惯于进行连接。
第一的你应该保证你的mysqld--socket
从命令行或配置文件中以有效选项开始。
第二,更奇怪的是,在任何基于 RedHat 的系统中安装存储库之外的东西时应该小心,因为 SELinux 可能会抱怨。
验证套接字是否确实在/tmp
,如果不在,则查找套接字:
find / -name 'mysql.sock'
进而恢复控制:
restorecon /tmp/mysql.sock
这应该可行。如果你很着急,可以暂时禁用 SELinux:
setenforce=0
然后再试一次。
这里有一个很好的解释:https://blogs.oracle.com/jsmyth/selinux-and-mysql