mysql--源码安装

环境:mysql(5.7.17)+boost(1_59_0)

关闭防火墙(firewalld):

systemctl stop firewalld
systemctl enable firewalld

关闭SeLinux:

vim /etc/selinux/config
     SELINUX=disable
    (重启生效,reboot)
## 查看selinux状态
getenforce

MySQL安装:

安装依赖包:

yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison epel*

mysql源码编译时要用到boost::

yum -y install wget

cd /usr/local/src/

wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

tar zxvf boost_1_59_0.tar.gz

mv boost_1_59_0 /usr/local/boost

检查是否存在mysql,存在则删除:

image

官方下载mysql5.7.17源码包:

地址:https://downloads.mysql.com/archives/community/

image

解压文件:

tar zxvf mysql-5.7.17.tar.gz

新建MySQL用户和用户组,创建/data/mysql 目录存放mysql数据:

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

mkdir -pv /data/mysql

cd mysql-5.7.17/

预编译及编译安装:

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock\
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BOOST=/usr/local/boost \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
	注:
	DCMAKE_INSTALL_PREFIX=/usr/local/mysql:安装路径
	DMYSQL_DATADIR=/data/mysql:数据文件存放位置
	DSYSCONFDIR=/etc:my.cnf路径
	DWITH_MYISAM_STORAGE_ENGINE=1:支持MyIASM引擎
	DWITH_INNOBASE_STORAGE_ENGINE=1:支持InnoDB引擎
	DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock:连接数据库socket路径
	DMYSQL_TCP_PORT=3306:端口
	DENABLED_LOCAL_INFILE=1:允许从本地导入数据
	DWITH_PARTITION_STORAGE_ENGINE=1:安装支持数据库分区
	DEXTRA_CHARSETS=all:安装所有的字符集
	DDEFAULT_CHARSET=utf8:默认字符
	DWITH_EMBEDDED_SERVER=1:嵌入式服务器
make && make install

设置启动脚本,开机自启动:

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

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

chmod +x /etc/init.d/mysqld

ln -s /usr/local/mysql/bin/* /usr/local/bin/

chkconfig --add mysqld

chkconfig mysqld on

拷贝my.cnf至/etc/目录下,并初始化数据库:

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

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

启动服务:

systemctl restart mysqld

查看状态:

ps -ef|grep mysql

root管理员修改密码:

mysql -uroot -p
	mysql> set password = password("root@123");
	mysql> alter user 'root'@'localhost' password expire never;
	mysql> FLUSH PRIVILEGES;

忘记密码:

## 停止数据库
systemctl stop mysqld
## 编辑配置文件
vim /etc/my.cnf
添加一行:skip-grant-tables
## 启动数据库
systemctl start mysqld
登陆数据库:
mysql 回车
回车
use mysql;
update mysql.user set authentication_string=password('root123') where user = 'root';
flush privileges;
## 配置密码后
## 删除配置文件中的“skip-grant-tables”
## 重启数据库
## 验证:
mysql -uroot -p
posted @ 2021-12-15 17:16  咖啡馆  阅读(38)  评论(0编辑  收藏  举报