centos7 minimal 环境下源码安装 mysql5.7.18

时间:2022-09-22 12:52:55

0x01下载 

下载并释放 mysql-5.7 18.tar.gz # yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
# yum install libaio libaio-devel -y
# yum install perl-Data-Dumper -y
# yum install net-tools -y
#yum install boost boost-devel boost-doc
#yum install bison
进入到 tar -zxvf mysql-5.7.18.tar.gz 释放出的安装目录 #cd mysql-5.7.18 #cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/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
进行编译,这里要注意两个目录 ,DMYSQL_DATADIR=/usr/local/mysql/data和 DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock  如果没有报错,执行 #make & make install

0x02创建用户及修改权限

创建mysql用户
#groupadd mysql
#useradd -s /sbin/nologin -M -g mysql mysql
-s表示指定用户所用的shell,此处为/sbin/nologin,表示不登录。
-M表示不创建用户主目录。
-g表示指定用户的组名为mysql。
mysql表示用户名。
# chown -R mysql:mysql /usr/local/mysql # chown -R mysql:mysql /usr/local/mysql

0x03初始化


# cd /usr/local/mysql
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
# mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
在5.7中,初始化后,在/root目录下会产生一个名为.mysql_secret的文件,为mysql初始随机密码

0x04 修改/etc/profile

在尾部增加

############################
export MYSQL_HOME=/usr/local/mysql
export PATH=${MYSQL_HOME}/bin:$PATH

执行 #source /etc/profile 使之生效

0x05 修改 /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
socket=/var/run/mysql/mysql.sock
explicit_defaults_for_timestamp=true
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd


[mysqld_safe]
log-error=/usr/local/mysql/data/主机名.err
pid-file=/usr/local/mysql/data/主机名.pid


#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
重点是两个目录要和执行安装命令时的两个目录相符

0x06 测试

开启服务端请执行mysqld_safe --defaults-file=/etc/my.cnf&或者mysql -uroot -S /var/run/mysql/mysql.sock -p
关闭服务端请执行mysqladmin shutdown -uroot  -S /var/run/mysql/mysql.sock -p
运行客户端 mysql -uroot -p ps -aux|grep mysql
root      /bin/sh ./mysqld_safe --defaults-file=/etc/my.cnf
mysql    /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/home/opt/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/home/opt/mysql/data/***.err --pid-file=/home/opt/mysql/data/***pid --socket=/var/run/mysql/mysql.sock

0x07可能遇到的问题

CMake Warning at cmake/bison.cmake:20 (MESSAGE):
  Bison executable not found in PATH
Call Stack (most recent call first):
  libmysqld/CMakeLists.txt:187 (INCLUDE)
安装bison可以解决 Starting MySQL.Logging to '/usr/local/mysql/data/hostname.err'.
 mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
 ERROR! The server quit without updating PID file  (/usr/local/mysql/data/clusternode0x15.pid).
my.cnf文件的配置问题或者是目录的权限问题 Access denied for user 'root'@'localhost' (using password: YES)
通过重新设置mysql root密码可能可以解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
通过开启远程连接可能可以解决,进入数据库后执行 use mysq; update user set host='%' where user='root';
TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
按提示在my.cnf加入相应配置
当报ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement 这个错误时,用系统给的随机初始密码,在文件/root/.mysql_secret中,进入mysql后执行 mysql> SET PASSWORD = PASSWORD('###');