centos 7 源码安装mysql_Centos7源码安装MySQL5.7

本文详细介绍了在CentOS 7上源码安装MySQL 5.7的步骤,包括解决连接数据库报111的错误、初始化数据库、配置my.cnf、启动和管理MySQL服务,以及处理忘记root密码的情况。通过实例演示了如何修改配置、创建用户和修改密码,提供了解决连接问题和安全设置的参考资料。
摘要由CSDN通过智能技术生成

a.连接数据库报111

从一台linux远程连接另一台linux上的MySQL,出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xx'(111)错误.

1.skip_networking:这个参数让MySQL只能通过本机Socket连接(socket连接也是本地连接的默认方式);

2.可能使用了bind_address=127.0.0.1;通过查看my.cnf,以上两个都是没设置的,排除掉这两种情况;

3.排查DNS解析问题,检查是否设置了:skip_name_resolve,这个参数加上后,不支持主机名的连接方式;

4.排查用户和密码问题,其实用户和密码的错误,不会出现111的,所以排除用户密码问题,密码错误报这个错;

ERROR 1045 (28000): Access denied for user 'root'@'XXXX' (using password: YES)

5.排查端口问题,有可能MySQL port不是默认的3306,连接时没有指定--port,最终得出监听端口是11306.

b.mysql5.7初始化

A.安装

yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

tar xf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

cd /usr/local/

mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql

mkdir -p /data/mysql/tmp

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /data/mysql/

cd /usr/local/mysql/bin

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

初始化数据库,会生成一个临时密码

b8ea06fe72b3f4f213926b2fb945e383.png

B.启动

配置my.cnf

[mysqld]

character_set_server=utf8

init_connect='SET NAMES utf8'

basedir=/usr/local/mysql

datadir=/data/mysql

#不区分大小写

lower_case_table_names = 1

#不开启sql严格模式

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

socket=/data/mysql/tmp/mysql.sock

log-error=/data/mysql/tmp/mysqld.log

pid-file=/data/mysql/tmp/mysqld.pid

[mysqld_safe]

log-error=/data/mysql/tmp/mysqld_safe.log

pid-file=/data/mysql/tmp/mysqld_safe.pid

# 添加开机启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# 修改启动脚本

vim /etc/init.d/mysqld

# 在46行添加路径

basedir=/usr/local/mysql

datadir=/data/mysql

C.解决问题

启动报错,这个问题在之前的博客中已经讲过

b596df6c315440c2fe290e61e814b520.png

创建文件并授予mysql权限

touch /data/mysql/tmp/mysqld_safe.log

chown -R mysql:mysql /data/mysql/

echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile

source /etc/profile

启动成功后,可以发现,pid文件是[mysqld]中定义的,log-error文件用的是[mysqld_safe]中定义的.

连接数据库,找不到socket,解决办法:

1.创建软链

1fac8e28d07ddd697d5fb03d901a251c.png

2.直接指定socket

860adfda30cfe7510d006b9979498c66.png

修改root密码并授权一个新用户

42c0e561b7371535a942dd73cc2af3ed.png

两个用户以不同的方式均可登录

41857ee4d9348114d23618535e738cd0.png

c.mysql5.7忘记root密码,如何修改去密码

# 关闭正在运行的 MySQL

service mysql stop

# 运行

mysqld_safe --skip-grant-tables &

# 为了安全可以这样禁止远程连接

mysqld_safe --skip-grant-tables --skip-networking &

# 使用mysql连接server

mysql -p

# 更改密码

update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';

# 新版的mysql数据库下的user表中已经没有Password字段了,而是将加密后的用户密码存储于authentication_string字段

flush privileges;

quit;

# 也可以使用alter user:

alter user 'root'@'localhost' identified by '123';

# 也可以这样

set password for 'root'@'localhost'=password('123');

d.mysql5.7自动初始化root密码

# 确保mysql是启动的

defaultmysqlpwd=`grep 'A temporary password' /var/log/mysqld.log | awk -F "root@localhost: " '{ print $2}'`

/usr/bin/mysql -uroot -p"${defaultmysqlpwd}" --connect-expired-password <

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456Aa?';

EOF

搭建参考这篇:https://blog.csdn.net/z13615480737/article/details/80019881

连接报111:https://www.cnblogs.com/ximalaya/p/6711792.html

忘记root密码:https://www.cnblogs.com/xiaotengyi/p/5458731.html

自动初始化root密码:https://www.cnblogs.com/fb010001/p/9134742.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值