源码安装mysql
1.下载相应依赖包
我们需要ncurses-devel、gcc、bzip等
yum -y install ncurses-devel gcc-* bzip2-* bison
下载cmake
cmake是用来配置mysql文件用的
方法一 直接用yum
yum -y install camke
或者
方法二 使用源码安装cmake
官网下载:cmake.org
wget https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2.tar.gz
tar xf cmake-3.16.2.tar.gz`
cd cmake-3.16.2
./configure
make
make install
下载mysql
官网:oracle.com
这里推荐使用国内镜像
我用的是搜狐镜像http://mirrors.sohu.com/mysql/
,这里我安装的是mysql-boost-5.7.23.tar.gz
版本,mysql中自带boost文件;当然,如果你的mysql里面没有boost文件,可以去网上下载boost,5.7的mysql推荐下载boost_1_59_0版本。
2.安装mysql
在安装mysql之前我们需要提前创建好mysql的数据目录,提前创建好mysql用户
useradd -s /sbin/nologin -r mysql
mkdir -pv /usr/local/mysql/data
cmake配置mysql
切换到mysql源码目录下,用cmake配置
5.7版本mysql需要用cmake编译,不能用configure编译了
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data/ \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDOWNLOAD_BOOST=0 \
-DWITH_INNODBBASE_STORAGE_ENGINE=1 \
-DENABLE_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql \
-DWITH_DEBUG=0 \
-DWITH_EMBEDED_SERVER=0 \
-DWITH_BOOST=boost
解释下
-DCMAKE_INSTALL_PREFIX=用户配置文件目录
-DMYSQL_DATADIR=用户数据目录
-DMYSQL_UNIX_ADDR=指定mysql.sock的路径
-DDOWNLOAD_BOOST=0 不下载boost
-DWITH_INNODBBASE_STORAGE_ENGINE=1 指定默认存储引擎
-DENABLE_LOCAL_INFILE=1 允许客户端使⽤local data
-DEXTRA_CHARSETS=all ⽀持所有字符集
-DDEFAULT_CHARSET=utf8 默认编码utf8
-DDEFAULT_COLLATION=utf8_general_ci 数据库校对规则
-DMYSQL_USER=mysql 管理用户mysql
-DWITH_DEBUG=0 关闭debug
-DWITH_EMBEDED_SERVER=0 ⽣成⼀个libmysqld.a(.so)的库,这个库同时集成了mysql服务与客户端API
-DWITH_BOOST=boost 指定boost的路径
注意:
- 每行结尾
\
为换行用的,注意,和行尾字符有空格。
当初把-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\
接在一起最后配置时候就出错了,导致只能重新安装mysql - 执行完程序,没有出现error即代表没问题,warning不要紧
- 最后一个,
DWITH_BOOST=boost
如果下载的mysql不带boost,则
tar xf boost_1_59_0.tar.bz2
mkdir /usr/local/boost
mv boost_1_59_0 /usr/local/boost
在/usr/local下创建一个文件夹boost,将解压的boost直接拷贝进去,
同时,cmake配置时,将最后一行代码改为-DWITH_BOOST=/usr/local/boost
编译和安装
mysql编译很慢,最好将虚拟机配置调高一点。
make
make install
虚拟机是多核时可以使用-j选项使用多核
make -j4 使用4核编译
make install -j4 使用4核安装
3.配置mysql
创建授权目录
cp support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chown mysql.mysql /usr/local/mysql/ -R
一定要给权限和使用者,不然mysql无法启动
创建链接
ln -sf /usr/local/mysql/bin/* /usr/bin/
ln -sf /usr/local/mysql/lib/* /usr/lib/
ln -sf /usr/local/mysql/libexec/* /usr/local/libexec
ln -sf /usr/local/mysql/share/man/man1/* /usr/share/man/man1
ln -sf /usr/local/mysql/share/man/man8/* /usr/share/man/man8
修改mysql配置文件
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
# 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=/var/log/mysql.log
pid-file=/var/run/mysql.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
basedir:mysql目录
datadir:mysql数据目录
socket:mysql连接文件目录,
log-error:mysql错误记录
pid-file:mysql运行pid文件
注意:
1.如果没有这个文件,试试在/etc/my.cnf.default
cp /etc/my.cnf.default /etc/my.cnf
2.一般经常出现Can 't connect to local MySQL server through socket XXX
,
多半是丢失套接字文件,无法连接,试试重启reboot
.
也有可能是/usr/local/mysql/mysql.sock
没有给写权限
chmod 777 /usr/local/mysql/mysql.sock
给他所有权限
初始化mysql
安装好mysql后要记得初始化
/usr/local/mysql/bin/mysqld --initialize \
--user=mysql \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data/
初始化过后,最后一条信息为mysql默认用户名和密码
示例
root@localhost: gUuNdvMa(9mg
root为管理员用户名
gUuNdvMa(9mg为密码
4.开启mysql服务
/etc/init.d/mysql start
查看服务器mysql开启了3306端口要验证mysql是否开启
lsof -i :3306
注意:防火墙不能封了这个端口
修改mysql管理员密码
mysql_secure_installation
将默认密码输入即可,然后根据需求选择后续
启动mysql
mysql -uroot -pqwaszx
-u后面为用户名
-p后面为密码
4.删除mysql
如果mysql安装不成功,需要重装
删除方法
关闭mysql
ps -A|grep mysql
查看mysql服务是否打开,第一排为进程号
kill -9 38712
kill杀死mysql服务,-9代表最严厉,38712为进程号
杀死所有mysql进程
删除mysql文件
find / -name mysql
查找mysql文件
根据查到的mysql文件,用rm全部删除
rm -rf /usr/bin/mysql
rm -rf /usr/local/mysql
rm -rf /usr/local/mysql/data/mysql
rm -rf /usr/local/mysql/include/mysql
rm -rf /usr/local/mysql/bin/mysql
即可