转载于:
编译编译方式安装mysql编译
环境准备
环境:
硬件为4C/4G/50G
系统版本为redhat7.9
创建用户和组
#创建MySQL用户和组,并且用户不能登陆(系统自带mysql软件,安装时会自动创建该用户,不需要单独手工创建)
groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql
创建相关的目录
[root@mysql1 ~]# mkdir -p /mysql/data && chown mysql.mysql /mysql/data #创建数据目录
[root@mysql1 ~]# mkdir -p /mysql/log && chown mysql.mysql /mysql/log #创建log目录
[root@mysql1 ~]# mkdir -p /var/lib/mysql && chown mysql.mysql /var/lib/mysql #创建UNIXSOCK目录
修改环境变量:
/root/.bash_profile添加
export PATH=\$PATH:/soft/mysql/bin
修改/etc/hosts
#编辑/etc/hosts,添加本机的hosts条目
vi /etc/hosts
关闭selinux和防火墙
#一定要关闭selinux
vi /etc/selinux/config
SELINUX=disabled
#关闭防火墙 root
systemctl stop firewalld.service
systemctl disable firewalld.service
安装依赖包
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
mv /etc/yum.repos.d /etc/yum.repos.d.bak
mkdir /etc/yum.repos.d
centos:
vi /etc/yum.repos.d/CentOS-local.repo
[base-local]
name=CentOS-local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum clean all
yum makecache
yum install -y make cmake gcc gcc-c++ ncurses ncurses-devel bison
各个包功能的简单介绍:
make mysql源代码是由C和C++语言编写,在linux下使用make对源码进行编译和构建,要求必须安装make 3.75或以上版本
gcc GCC是Linux下的C语言编译工具,mysql源码编译完全由C和C++编写,要求必须安装GCC4.4.6或以上版本
cmake mysql使用cmake跨平台工具预编译源码,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。安装最新版本即可。
bison Linux下C/C++语法分析器
ncurses 字符终端处理库
卸载自安装软件
8、卸载自带mariadb和mysql
- 检查系统是否安装mysql:
rpm -qa | grep mysql
,因为我是最小化安装所以没有。 - 如果有则强制卸载:
rpm -e --nodeps $(rpm -qa | grep mysql)
- 检查系统是否安装mariadb:
rpm -qa | grep mariadb
- 如果有则强制卸载:
rpm -e --nodeps $(rpm -qa | grep mariadb)
,这里卸载成功。
#解压
cd /soft
tar -xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
四、MySQL 初始化
1、初始化 MySQL 数据库
通过以下命令初始化创建 MySQL 数据库:
mysqld --initialize --user=mysql --basedir=/soft/mysql --datadir=/mysql/data/
[root@mysql1 bin]# mysqld --initialize --user=mysql --basedir=/soft/mysql --datadir=/mysql/data/
2022-10-10T09:09:18.725650Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-10-10T09:09:19.068992Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-10-10T09:09:19.142721Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-10-10T09:09:19.210954Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 38f4f96f-487b-11ed-97e6-000c29a8d7cd.
2022-10-10T09:09:19.212859Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-10-10T09:09:19.213433Z 1 [Note] A temporary password is generated for root@localhost: hoyY2l-ho,Fa
[root@mysql1 bin]#
注意:这里框出的是root用户的初始密码:hoyY2l-ho,Fa
2、配置 my.cnf
配置 my.cnf 文件:
cat <<EOF>/etc/my.cnf
[mysqld]
user=mysql
basedir=/soft/mysql
datadir=/mysql/data
server_id=6
port=3306
socket=/tmp/mysql.sock
##客户端
[mysql]
socket=/tmp/mysql.sock
prompt=lucifer [\\\\d]>
EOF
复制
启动 MySQL 服务:
/soft/mysql/support-files/mysql.server start
复制
当然 MySQL 服务也可以配置开机自启动!
3、配置 MySQL 开机自启
Linux 6&7 通用配置方式:
cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
复制
配置完之后就可以用 service mysqld start
启动 MySQL 服务!
4、修改 MySQL ROOT 密码
尝试连接mysql数据库:
mysql -uroot hoyY2l-ho,Fa
上述步骤失败,修改/etc/my.cnf文件
打开刚才我们找到的配置文件,然后在里面找到 [mysqld]
这一项,然后在该配置项下添加 skip-grant-tables
这个配置,然后保存文件。
再将 mysql 关闭,再重启mysql(直接从上述步骤中的创建my.cnf后开始重新执行)
再次进入mysql -uroot,此时无需输入密码,即可进入下述的界面
重设 root 密码:
mysqladmin -uroot -pyhfvt_rP,24M password mysql
由于本次免密登陆,于是按照如下说法修改密码
lucifer [(none)]>use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
lucifer [mysql]>update user set authentication_string=password('mysql') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
lucifer [mysql]>flush privileges;
Query OK, 0 rows affected (0.00 sec)
lucifer [mysql]>quit;
Bye
复制
用新密码连接 MySQL 数据库:
mysql -uroot -pmysql
复制
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)