此文分为两部分,前面是编译与安装,后面是MySQL配置。
编译与安装
准备工作
- 下载MySQL源码包
本文下载的是 mysql-5.6.43.tar.gz- 卸载系统安装过的MySQL Server
当然前提是你曾经在这台机器安装过MySQL,如果不确定是否安装过,那么可以执行
rpm -qa | grep mysql
如果有,则卸载
rpm -e --nodeps mysql
- 安装编译代码所需要的包
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
在顺利地执行完准备工作后,即可开始正式工作了。
1. 解压mysql源码包
tar -zxvf mysql-5.6.43.tar.gz -C /opt/
2. 编译源码
-
进入源码包解压处
cd /opt/mysql-5.6.43
-
执行以下的一条命令
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_STORAG_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
本人此步骤失败,以为是gcc问题,所以安装了devtoolset-2,最后发现改变数据库版本更容易解决问题,因为我一开始使用的mysql8.0.14.tar.gz,所以中途才决定使用mysql-5.6.43.tar.gz
- 编译与安装
make && make install
make时,又发现Error: expecting string instruction after `rep’错误,好像是由于之前安装了devtoolset-2,升级了gcc,故安装devtoolset-2-binutils-2.23.52.0.1-10.el6.i686
- 等待完毕
配置mysql
1. 创建mysql账户
-
查看是否有mysql用户和用户组
-
查看用户列表
cat /etc/passwd | grep mysql
-
查看用户组列表
cat /etc/group | grep mysql
-
-
如果没有则创建
- 创建mysql组
groupadd mysql
- 创建mysql用户
useradd -g mysql mysql
- 创建mysql组
2. 设置权限
将刚才安装的mysql文件权限赋予mysql用户和mysql用户组
chown -R mysql:mysql /usr/local/mysql
3. 初始化配置
- 进入安装路径
cd /usr/local/mysql
- 运行以下一条命令
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
4. 启动mysql
-
进入安装路径
cd /usr/local/mysql
-
复制配置文件
cp support-files/mysql.server /etc/init.d/mysql
-
设置自启动
chkconfig mysql on
-
开启mysql服务
service mysql start
很有可能开启mysql服务失败,我也是失败了,我遇到了下面的错误
Starting MySQL.Logging to ‘/usr/local/mysql/data/localhost.localdomain.err’.
190126 21:54:08 mysqld_safe Directory ‘/var/lib/mysql’ for UNIX socket file don’t exists.
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).此处存在两个错误,那我们先解决先出现的问题,因为不确定是否是由于先出现的错误导致了后面的错误,先出现的错误如下
mysqld_safe Directory ‘/var/lib/mysql’ for UNIX socket file don’t exists.
- 缺少目录而已,那我们给他,执行以下命令创建/var/lib/mysql 目录
mkdir /var/lib/mysql
再次尝试执行
service mysql start
还是失败,不过只有一个错误了
Starting MySQL…The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid). [失败]
查看日志
cat /usr/local/mysql/data/localhost.localdomain.err
发现错误2019-01-26 22:09:12 23053 [ERROR] Can’t start server : Bind on unix socket: Permission denied
2019-01-26 22:09:12 23053 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
2019-01-26 22:09:12 23053 [ERROR] Aborting网上查阅资料后,可能是由于mysql服务无法在/var/lib/mysql/目录下创建文件,执行以下命令
chmod 777 /var/lib/mysql
把/var/lib/mysql目录粗暴地暴露出来
再次尝试执行
service mysql start
成功
5. 设置mysql密码
-
进如mysql安装目录
cd /usr/local/mysql/bin
-
运行mysql
./mysql -u root
-
设置密码
mysql> SET PASSWORD = PASSWORD(‘你设置的密码’); -
登录
退出刚刚无密码登录的mysql
exit
使用密码登录mysql
./mysql -u root -p