目录
一、编译安装MySQL步骤:
1.环境准备
2.初始化mysql
3.修改MySQL密码
二、若初始化失败,重新初始化
三、设置MySQL开机自启
四、问题和解决方法
问题1
问题2
五、MySQL忘记密码,重置密码
首先安装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:启用下载,以便从互联网下载缺失的文件。
修改目录的属主和属组都为 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'
法一:
有初始密码:
[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 &
[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
[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
解决方法:
[root@www-mysql ~]# cd /usr/local/mysql
[root@www-mysql mysql]# sudo ./support-files/mysql.server start
Starting MySQL.. SUCCESS!
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> exit3.注释掉免密登入,重启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及以上。