Centos7 安装 Mysql5.7

本贴最后更新于 2228 天前,其中的信息可能已经时过境迁

1. 下载安装包

进入 Mysql 官网: https://dev.mysql.com/downloads/mysql/
这里选择的是 5.7 Linux-Generic 版本

进入服务器目录: cd /usr/local
下载 tar 包: wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

2.安装

先解压下载好的文件:tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
然后重命名目录 mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql

为 mysql 添加新的用户和用户组:
添加用户组: groupadd mysql
添加 mysql 用户到用户组 mysql: useradd -r -g mysql mysql //添加完成后可用 id mysql 查看

添加完成后修改下文件的用户和用户组: cd mysql chown -R mysql:mysql ./
imagepng

初始化 mysql: bin/mysqld –-initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
imagepng
这里需要把初始化最后生成的临时密码记录下来,等会登录的时候会用到。

初始化时候可能会报错:error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
原因:yum 安装的 libnuma.so.1,但安装时默认安装的是 32 的,但 db2 需要的是 64 位的
解决: 有的话先卸载试试: yum remove libnuma.so.1 然后安装: yum -y install numactl.x86_64
还有一种解决办法: 直接 yum install -y libaio ,安装完成后初始化就 ok 了

初始化完成后执行以下命令创建 RSA private key: bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
然后修改当前目录拥有者为 mysql 用户: chown -R mysql:mysql ./
修改当前 data 目录拥有者为 mysql 用户: chown -R mysql:mysql data

配置 my.cnf: vi /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
#不区分大小写 (sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个简单来说就是sql语句是否严格)
lower_case_table_names = 1
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid

3.添加开机启动

复制脚本文件: cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
修改: vi /etc/init.d/mysqld
修改项:basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
imagepng
设置文件为服务运行级别 chkconfig --add mysqld
设置为开机自启动: chkconfig mysqld on

额外说明:
查看 chkconfig 的管理:chkconfig --list
删除 chkconfig 上的 mysql 管理:chkconfig --del mysqld
关闭 mysql 服务自启动: chkconfig mysqld off

4. 测试结果

启动 mysql: service mysqld start
登录 mysql: mysql -u root -p 然后输入刚才的临时密码
imagepng

报错:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
imagepng
分析原因:无法通过 socket 文件/var/lib/mysql/mysql.sock 连接到 mysql 服务器,也就是说对于 mysql 程序来说,尽管在 my.cnf 里指定了 socket,但是对于 mysql 还是会从默认的安装目录/var/lib/mysql/里找这个 mysql.sock 文件,找不着,就不知道从哪里启动了。
解决: 做个软连接: ln -s /tmp/mysql.sock /var/lib/mysql/


报错:ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.
imagepng
原因: 密码过期
解决: 用忽略授权表的方法进入 mysql: vi /etc/my.cnf
在最后添加: skip-grant-tables
保存后重启 mysql: service mysqld restart
然后进入 mysql 查看 root 用户的详细信息: mysql -uroot -p
进入 mysql 后: use mysql;
select * from mysql.user where user='root' \G
imagepng
把 passwordexpired 改成不过期: update user set password_expired='N' where user='root';
刷新: flush privileges;
退出: quit
把 /etc/my.cnf 的 skip-grant-tables 这行去掉,,然后重启 mysql: service mysqld restart
再次登录就正常啦

进入后先修改下 root 用户密码: SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

4.远程访问 mysql

进入 mysql 后 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
即允许 root 用户在任何地方进行远程登录,并具有所有库任何操作权限;
刷新: FLUSH PRIVILEGES;
然后退出: quit

然后用 Navicat for mysql 连接,连接成功:
imagepng

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    946 引用 • 943 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    692 引用 • 535 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...