虚拟机环境下CentOS 7 中安装Mysql 5.7.24(源码方式安装)

偿试过用yum安装的都失败了,原因是服务启动时报错,偿试了多种解决办法,均不成功。然用源码方法却成功了,下面就介绍记录一下安装步骤。

1 安装cmake工具
yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
2 进入/usr/local/src目录,下载安装操作
  • 下载mysql压缩包
wget  https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
  • 解压
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
  • 复制解压后的文件夹到/usr/local/mysql目录
cp -r mysql-5.7.24-linux-glibc2.12-x86_64   /usr/local/mysql
  • 添加系统mysql组和mysql用户
groupadd mysql
useradd -r -g mysql mysql  // 添加完成后可用id mysql查看
  • 安装数据库,这一步时间要久一点
切到mysql目录 cd /usr/local/mysql
修改当前目录拥有者为mysql用户 chown -R mysql:mysql ./
安装数据库 bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

此步会生成临时密码,不记得也没关系,可通过命令查找出来:grep "password" /var/log/mysqld.log

3 配置my.cnf
  • 清空my.cnf:cat /dev/null > /etc/my.cnf
  • 编辑:vim /etc/my.cnf 复制如下文本进去
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#不区分大小写 
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"
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
  • 启动相关配置
  • 添加开机启动
cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
  • 修改开机启动路径
vim /etc/init.d/mysqld   
basedir=与datadir=后面添加:

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

  • 启动mysql
service mysqld start 
  • 加入开机启动
chkconfig --add mysqld  
  • 登录mysql报错
mysql -uroot -p

报错:-bash: /usr/bin/mysql: 没有那个文件或目录
解决:添加软连接 ln -s /usr/local/mysql/bin/mysql /usr/bin

报错Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
原因: 我们前面my.cnf中mysqld下,socket=/tmp/mysql.sock。
解决:在服务启动后执行 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

设置root用户密码
  • 找回默认密码
grep "password" /var/log/mysqld.log    
  • 设置新密码
alter user 'root'@'localhost' identified by '你的新密码';   
flush privileges;    #刷新权限
或者
step 1: SET PASSWORD = PASSWORD(‘你的新密码’);
step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
step 3: flush privileges;

然后,执行exit退出,重新mysql -u root -p登录。

推荐阅读更多精彩内容