使用源码编译安装的好处是灵活,可以安装多个版本。此次安装是将所有mysql相关信息都放在/home/mysql8目录下的!因此理论上是可以一台机器安装多个版本的。
另由于环境差异和个人的水平不同,有些细节性的东西不再赘述。
源码包下载地址:https://dev.mysql.com/downloads/mysql/
官方说明文档:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html
1.1 预先下载一些需要的库和工具
apt-get install cmake gcc libncurses5-dev
1.2 为了不污染源码包,在源码包下建一个build目录,在build目录中编译
mkdir /home/data/mysql-8.0.17/build
cd /home/data/mysql-8.0.17/build
1.3 解压包后,进入包内进行cmake
cmake .. \
-DCMAKE_INSTALL_PREFIX=/home/mysql8 \
-DMYSQL_UNIX_ADDR=/home/mysql8/run/mysql.sock \
-DSYSCONFDIR=/home/mysql8/etc \
-DSYSTEMD_PID_DIR=/home/mysql8/run \
-DMYSQL_DATADIR=/home/mysql8/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/home/mysql8/boost \
-DWITH_SYSTEMD=1
选项说明:
说明详细地址:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
CMAKE_INSTALL_PREFIX 安装基本目录,等价于启动时的–basedir选项
MYSQL_UNIX_ADDR 连接文件位置
SYSCONFDIR 配置文件位置
SYSTEMD_PID_DIR PID文件目录
MYSQL_DATADIR 数据文件目录
DOWNLOAD_BOOST 是否安装时下载boost库
WITH_BOOST boost文件路径
WITH_SYSTEMD 是否安装systemd support files.开启后,安装后会多一个support-files文件夹,并且mysqld_safe不会被安装
FORCE_INSOURCE_BUILD 是否强制在源码路径进行build,默认off
DEFAULT_CHARSET 默认编码,8.0默认utf8mb4
DEFAULT_COLLATION 默认排序规则,8.0默认utf8mb4_0900_ai_ci
期间可能会提示缺少依赖,相应进行安装即可。
1.4 cmake成功后进行
make && make install
这里需要花费较长时间,等两个小时吧,去干点有意义的事吧~
2.1 添加mysql用户组和配置文件权属。
groupadd mysql
useradd mysql -g mysql -s /usr/sbin/nologin -M
chown -R mysql:mysql /home/mysql8
2.2 初始化配置,会生成root密码,记得记下来哦!
/home/mysql8/bin/mysqld --defaults-file=/home/mysql8/etc/my.cnf --initialize --user=mysql --basedir=/home/mysql8 --datadir=/home/mysql8/data
2.3 修改启停服务脚本路径,以后就靠这里的mysqld来启动
cp /home/mysql8/support-files/mysql.server /home/mysql8/mysqld
3.1 启动服务
/home/mysql8/mysqld start
如果报目录权限问题,记得修改/home/mysql8目录的owner为mysql
/home/etc/my.cnf配置文件自己记得添加,另外记得系统中不要存在/etc/mysql目录,默认会先去/etc/mysql下寻找配置
启动成功后,可以通过ps -ef|grep mysql 或 /home/mysql8/mysqld status查看。
3.2 配置环境变量,添加mysql下的bin目录到环境变量中
Vim /etc/profile,在最后一行添加
export PATH=$PATH:/home/mysql8/bin
然后使其生效
source /etc/profile
3.3 现在就可以直接使用mysql登录啦
mysql -h 127.0.0.1 -P 3360 -u root -p
这里连接的具体参数要根据/home/mysql8/etc/my.cnf中配置而定,然后输入root密码
如果连接报类似错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/home/mysql8/run/mysql.sock’ (2)
我已经生成了启动是已经生成了sock文件的,默认在/home/mysql/run目录下。这里是因为找不到sock文件。有两种方法:
1.临时解决,加上参数-h 127.0.0.1,默认是localhost,这两种走的协议是不一样的,使用127.0.0.1
2.根本上解决,在配置文件中指定好就行了。在我的配置文件中,[mysqld]、[mysql]和[client]下都配置:
socket = /home/mysql8/run/mysqld.sock
3.4 连接后执行任一命令都会要求修改root密码:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
直接修改就好啦
alter user 'root'@'localhost' identified by '123456';
如果因为密码策略限制,可以网上搜索相关教程修改
到这里就安装配置完成了,done。