mysql5.7.30源码安装(centos7)

    科技2024-04-05  86

    mysql5.7应该还是生产用的最多的版本,最近对比了yum、rpm、tar、源码安装,发现还是源码安装最稳,心里踏实的一比,以下安装基于centos7.6 x64,基础优化关闭selinux、防火墙等基本操作。

    0、linux基础优化 卸载已有的mysql或mariadb-lib

    /bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps /bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps

    1、官网下载带boost版本源码包 https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.30.tar.gz 2、安装依赖包

    yum install -y libaio cmake yum install -y gcc-c++ bison-devel ncurses-devel bison perl perl-devel perl perl-devel

    3、安装 创建一个资源目录把 MySQL 安装包 上传到这个目录下

    mkdir /usr/local/resource

    解压安装包

    tar -xf mysql-boost5.7.30.tar.gz

    添加mysql组及用户

    groupadd mysql useradd -r -g mysql mysql

    新建MySQL的安装目录

    mkdir -p /usr/local/mysql

    新建MySQL的数据存储目录

    mkdir -p /data/mysql

    编译安装 进入解压的目录

    cd /usr/local/resource/mysql-5.7.30

    cmake编译

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_BOOST=boost -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

    make编译,耗时比较长,耐心等待

    make

    make安装

    make install

    设置权限

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

    初始化MySQL

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

    初始化完成,并给root用户生成了临时密码,这里要把密码记录下来,稍后需要 复制mysql服务启动脚本

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

    启动MySQL服务

    service mysqld start

    提示错误

    mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

    这个是因为centos7自带了mariadb-lib库, 方法一、执行最开始的删除操作就好了 --推荐

    /bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps

    方法二、创建提示缺少的目录和文件,并授权 --不推荐

    mkdir -p /var/log/mariadb touch /var/log/mariadb/mariadb.log chown -R mysql:mysql /var/log/mariadb/

    提示错误

    mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.

    解决办法:

    mkdir -p /var/lib/mysql chown -R mysql:mysql /var/lib/mysql

    再次启动,检查service mysqld status为SUCCESS! MySQL running就正常启动了

    登录

    ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql mysql -u root -p

    输入刚刚的密码 登录成功 修改MySQL用户root的密码为root

    mysql> set password for root@localhost = password('123456');

    赋予权限并设置可以远程访问

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

    刷新权限

    mysql> FLUSH PRIVILEGES;

    远程测试连接

    修改参数

    mysql -u root -p123456 show global variables like '%lower_case%'; | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | # 文件系统大小写敏感,这个改不了 | lower_case_table_names | 0 | # 默认表名大小写敏感 +------------------------+-------+

    源码安装的没有配置文件,自己创建一个,只写入需修改的参数就好了

    vi /etc/my.cnf [mysqld] #表名大小写不敏感 lower_case_table_names=1 #最大连接数 max_connections=1000

    重启服务

    service mysqld restart mysql -u root -p123456 show global variables like '%lower_case%'; | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 1 | +------------------------+-------+ mysql> show variables like '%max_connections%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 1000 | +-----------------+-------+

    修改成功!

    启停命令: 启动

    service mysqld start

    重启

    service mysqld restart

    停止

    service mysqld stop
    Processed: 0.012, SQL: 8