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

Linux编译安装MySQL_第1张图片

 解决方法:

[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及以上。

你可能感兴趣的:(数据库,mysql,linux,数据库)