mysql> select version() from dual; #查看当前MySQL版本的命令
MySQL源码包安装: (本列使用MySQL-5.7.29)
安装依赖包:yum安装 gcc gcc-c++ m4 openssl-devel
yum -y install gcc gcc-c++ m4 openssl-devel
安装:cmake
tar zxf cmake-3.16.4.tar.gz
cd cmake-3.16.4
./bootstrap
gmake && gmake install #gmake是指GNU make #在linux环境下gmake和make是一样的
cmake -version #查看cmake版本
安装:ncurses
tar zxf ncurses-6.2.tar.gz
cd ncurses-6.2/
./configure && make && make install
安装:bison
tar zxf bison-3.5.2.tar.gz
cd bison-3.0.4/
./configure && make && make install
安装:boost
tar zxf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql ##新建 msyql 组和 msyql 用 户禁止登录 shell
mkdir /usr/local/mysql #---创建目录
mkdir /usr/local/mysql/data #---数据库目录
编译安装MySQL:
tar zxf mysql-5.7.29.tar.gz
cd mysql-5.7.29
#执行cmake命令进行编译前的配置:
[root@localhost mysql-5.7.29]#
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ # [MySQL安装的根目录]
-DMYSQL_DATADIR=/usr/local/mysql/data \ # [MySQL 数据库文件存放目录]
-DSYSCONFDIR=/erc \ # [MySQL 配置文件所在目录]
-DDEFAULT_CHARSET=utf8 \ # [设置 MySQL 的默认字符集为 utf8]
-DDEFAULT_COLLATION=utf8_general_ci \ # [设置默认字符集校对规则 ]
-DEXTRA_CHARSETS=all \ # [使 MySQL 支持所有的扩展字符]
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ # [指定 mysql.sock 位置 ]
-DWITH_MYISAM_STORAGE_ENGINE=1 \ # [添加 MYISAM 引擎支持 ]
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ # [添加 InnoDB 引擎支持 ]
-DWITH_ARCHIVE_STORAGE_ENGINE=ENGINE=1 \ # [添加 ARCHIVE 引擎支持 ]
-DWITH_PArTITON_STORAGE_ENGINE=1 \ # [安装支持数据库分区 ]
-DWITH_SYSTEMD=1 \ # [可以使用 systemd 控制 mysql 服务]
-DWITH_BOOST=/usr/local/boost # [指向 boost 库所在目录]
编译:
[root@localhost mysql-5.7.29]#make && make install
修改配置文件:
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysqld.pid
port = 3306
server_id = 1
socket = /tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
给予MySQL权限
chown -R mysql:mysql /usr/local/mysql
5.7版本以后使用此方法初始化MySQL:
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
将/usr/local/mysql/usr/lib/systemd/system/mysqld.service复制到
/usr/lib/systemd/system/ #能够直接使用 systemctl 来启动,关闭和重启MYSQL
在/etc/profile 文件中最后添加:
export PATH=$PATH:/usr/local/mysql/bin
然后执行source /etc/profile
将/usr/lib/systemd/system/mysqld.service 文件中的 42行改为
PDFile=/usr/local/mysql/data/mysqld.pid
还有54行改为
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS
#(和/etc/my.cnf 文件中pid-file的路径一样就行)
登录MySQL:
mysql -uroot -p #(输入初始化时的随机密码)
查看临时密码:
grep password /usr/local/mysql/data/mysql.err
如果之前初始化数据库时使用的是–initialize-insecure 命令,那么就不会出现密码。如果以–initialize初始化数据库,就会出现密码。initialize意为“不安全的,不可靠的”,这也就解释了为什么加上他就没有出现密码,及root的密码为空。
设置新的MySQL密码:
在数据库中修改:
ALTER USER root@localhost identified by '密码'; #(密码表示要修改的新密码)
在命令行页面修改:
mysqladmin -uroot -p password '密码' #(密码表示要修改的新密码)
Enter password: #输入旧密码