Linux编译安装MySQL

目录

一、编译安装MySQL步骤:

1.环境准备

2.初始化mysql

3.修改MySQL密码

二、若初始化失败,重新初始化

三、设置MySQL开机自启

四、问题和解决方法

问题1

问题2

五、MySQL忘记密码,重置密码



一、编译安装MySQL步骤:

1.环境准备

首先安装MySQL所需的依赖包、用户、用户组等

[root@www-mysql ~]# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake      
[root@www-mysql ~]# groupadd mysql
[root@www-mysql ~]# useradd -M -g mysql -s /sbin/nologin mysql
[root@www-mysql ~]# cd /usr/local/

获取MySQL安装包,并解压,开始编译安装MySQL

[root@www-mysql local]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.34.tar.gz 
[root@www-mysql local]# tar xf mysql-boost-5.7.34.tar.gz
[root@www-mysql local]# cd mysql-5.7.34
[root@www-mysql mysql-5.734]# cmake . \
-DWITH_BOOST=/usr/local/mysql-5.7.34/boost \         
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

# 编译
[root@www-mysql mysql-5.734]# make  

# 编译安装           
[root@www-mysql mysql-5.734]# make install 

上面的命令中,配置编译选项的说明如下:

-DWITH_BOOST=/usr/local/mysql-5.7.34/boost 目录为下载MySQL包的目录  

-DCMAKE_INSTALL_PREFIX:指定MySQL的安装路径。

-DMYSQL_DATADIR:指定MySQL的数据文件存储路径。

-DSYSCONFDIR:指定MySQL的配置文件存储路径。

-DWITH_INNOBASE_STORAGE_ENGINE:启用InnoDB存储引擎。

-DWITH_ARCHIVE_STORAGE_ENGINE:启用Archive存储引擎。

-DWITH_BLACKHOLE_STORAGE_ENGINE:启用Blackhole存储引擎。

-DWITH_READLINE:启用Readline库,提供更好的命令行编辑和输入功能。

-DWITH_SSL:启用SSL支持,使用系统库。

-DWITH_ZLIB:使用系统库的Zlib库,提供压缩支持。

-DWITH_LIBWRAP:禁用Libwrap库,用于限制应用程序的访问。

-DENABLED_LOCAL_INFILE:启用本地文件的读写操作。

-DENABLE_DOWNLOADS:启用下载,以便从互联网下载缺失的文件。

2.初始化mysql

修改目录的属主和属组都为 mysql

[root@www-mysql mysql-5.7.34]# cd ..
[root@www-mysql local]# cd mysql
[root@www-mysql mysql]# mkdir mysql-files
[root@www-mysql mysql]# chown -R mysql.mysql  /usr/local/mysql      

MySQL初始化

[root@www-mysql mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2021-09-08T01:32:35.104099Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-09-08T01:32:35.307065Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-09-08T01:32:35.395849Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-09-08T01:32:35.460857Z 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: a50dcd62-1044-11ec-9393-000c29b79fa9.
2021-09-08T01:32:35.461585Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-09-08T01:32:35.698304Z 0 [Warning] CA certificate ca.pem is self signed.
2021-09-08T01:32:35.741654Z 1 [Note] A temporary password is generated for root@localhost: j+ylL!dqe8i8

# 注:MySQL的初始化密码:j+ylL!dqe8i8

[root@www-mysql mysql]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

配置MySQL的my.cnf文件
[root@www-mysql mysql]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

启动MySQL,使用初始密码登入MySQL

[root@www-mysql mysql]# bin/mysqld_safe --user=mysql &

[root@www-mysql mysql]# ps aux |grep mysqld
oot      39098  0.0  0.1 113412  1608 pts/1    S    21:26   0:00 /bin/sh bin/mysqld_safe --user=mysql
mysql     39195  0.1 16.9 1141524 169152 pts/1  Sl   21:26   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=www-mysql.err --pid-file=www-mysql.pid
root      39227  0.0  0.0 112808   968 pts/1    R+   21:30   0:00 grep --color=auto mysqld

[root@www-mysql mysql]# /usr/local/mysql/bin/mysql  -uroot -p'j+ylL!dqe8i8' 

加入环境变量,PATH[可选]

[root@www-mysql mysql]# mysql
-bash: mysql: command not found
[root@www-mysql mysql]# /usr/local/mysql/bin/mysql
[root@mysql mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@www-mysql mysql]# source /etc/profile

[root@www-mysql mysql]# mysql -uroot -p'j+ylL!dqe8i8'

3.修改MySQL密码

法一:

有初始密码:
[root@www-mysql ~]# mysqladmin -uroot -p'>>j+ylL!dqe8i8' password '(Gz123..)'

无初始密码:
[root@www-mysql ~]# mysqladmin -uroot password"gzGZ2121.."

法二:
[root@www-mysql ysql]# mysql  -uroot -p'j+ylL!dqe8i8' 
mysql>alter user 'root'@'localhost' identified by 'Gz123..';    #修改MySQL密码
msyql>flush privileges;                           #刷新权限

二、若初始化失败,重新初始化

//重新初始化
[root@www-mysql mysql]# killall mysqld
[root@www-mysql mysql]# rm -rf /usr/local/mysql/data
[root@www-mysql mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
[root@www-mysql mysql]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

编译安装的MySQL重启服务
[root@www-mysql mysql]# pkill -9 mysql
[root@www-mysql mysql]# bin/mysqld_safe --user=mysql &

三、设置MySQL开机自启

[root@www-mysql ~]# vim /etc/rc.local 
/usr/local/mysql/bin/mysqld_safe --user=mysql &    # 设置MySQL开机自启

[root@www-mysql ~]# chmod 777 /etc/rc.local         # 修改文件权限为777

四、问题和解决方法

问题1

[root@www-mysql mysql]# bin/mysqld_safe --user=mysql &
[1] 38959

问题:
[root@www-mysql mysql]# 2021-09-07T13:21:39.369434Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

原因:
/etc/my.cnf 文件里含有关于mariadb的配置

解决: 
[root@www-mysql]# rm -rf /etc/my.cnf
[root@www-mysql mysql]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql        # MySQL的基准目录
datadir=/usr/local/mysql/data   # MySQL的数据目录
[root@www-mysql mysql]# ps aux |grep mysqld
oot      39098  0.0  0.1 113412  1608 pts/1    S    21:26   0:00 /bin/sh bin/mysqld_safe --user=mysql
mysql     39195  0.1 16.9 1141524 169152 pts/1  Sl   21:26   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=www-mysql.err --pid-file=www-mysql.pid
root      39227  0.0  0.0 112808   968 pts/1    R+   21:30   0:00 grep --color=auto mysqld

问题2

 解决方法:

[root@www-mysql ~]# cd /usr/local/mysql
[root@www-mysql mysql]# sudo ./support-files/mysql.server  start
Starting MySQL.. SUCCESS! 

五、MySQL忘记密码,重置密码

1.修改配置,添加免密登入,并重启MySQL服务
[root@www-mysql mysql]# vim /etc/my.cnf
[mysqld]
skip-grant-tables


[root@www-mysql mysql]# pkill -9 mysql
[root@www-mysql mysql]# bin/mysqld_safe --user=mysql &

2.MySQL客户端连接服务器并修改密码
# /usr/local/mysql/bin/mysql
mysql> select user,host,authentication_string from mysql.user;
mysql> update mysql.user set authentication_string=password('Gz12345!') where user='root';
mysql> flush privileges;
mysql> exit

3.注释掉免密登入,重启MySQL,并登录测试
[root@mysql1 ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables    
[root@mysql1 mysql]# pkill -9 mysql
[root@mysql1 mysql]# bin/mysqld_safe --user=mysql &

!!!把跳过密码的配置去掉并重新启动MySQL

[root@mysql1 mysql]# /usr/local/mysql/bin/mysql -u root -p'Gz12345!'

注:以上安装方法、问题和解决方案仅针对编译安装MySQL5.7及以上。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Windows上进行MySQL 8.0的编译安装,你可以按照以下步骤进行操作: 1. 首先,你需要下载MySQL的源代码。你可以从MySQL官方网站上下载最新的MySQL 8.0版本的源代码。 2. 下载完成后,你需要安装一个适合编译MySQL编译器,比如Microsoft Visual Studio。确保你的编译器版本与你的MySQL版本兼容。 3. 接下来,你需要设置一些编译MySQL所需的环境变量。你可以按照MySQL的官方文档中关于Windows下的编译指南进行设置。 4. 在设置好环境变量后,你可以打开命令提示符或PowerShell窗口,并导航到MySQL源代码的根目录。 5. 在命令提示符或PowerShell窗口中,输入以下命令来配置编译选项: ``` cmake . -G "Visual Studio <版本号>" -DCMAKE_INSTALL_PREFIX=<安装路径> ``` 这里,你需要将 `<版本号>` 替换为你所使用的Visual Studio的版本号,将 `<安装路径>` 替换为你想要将MySQL安装到的路径。 6. 配置完成后,你可以使用Visual Studio打开MySQL的解决方案文件(.sln文件)。在Visual Studio中,你可以选择编译和生成MySQL安装程序。 7. 编译完成后,你可以按照MySQL的官方文档中关于Windows下的安装指南进行安装。 需要注意的是,编译安装MySQL可能需要一些编译知识和经验。如果你是初学者或没有相关经验,你也可以考虑使用MySQL安装程序进行安装,而不是编译安装MySQL提供了两种安装程序版本:在线安装版本(mysql-installer-web-community)和离线安装版本(mysql-installer-community)。 如果你之前已经安装MySQL,并且遇到了一些问题,你可以尝试删除以前的安装目录以及MySQL的DATA目录,并重新安装MySQL来解决问题。你可以通过在Windows资源管理器中删除MySQL安装目录文件夹,并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值