mysql源码安装过程

mysql 的编译安装:
一:确保环境的干净
1.卸载系统原先自带的mysql版本html

[root@www ~]# rpm -q mysql
[root@www ~]# rpm -e  
[root@www ~]# rpm -q mysql
package mysql is not installed

小结:卸载的时候若是卸载不掉,系统通常会提示包的依赖关系,而且列出依赖的包的名称,先卸载提示依赖的包就能够了mysql

 
 

2.卸载以前的mysqllinux

[root@dbmaster ~]#  ps aux | grep mysql
mysql    105124  0.0  0.0 113308  1628 ?        Ss   3月15   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql    105310  0.0  0.0 1186852 199088 ?      Sl   3月15  26:43 /usr/libexec/mysqld --basedir=/usr --datadir=/data/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/data/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root     158731  0.0  0.0 112728   984 pts/0    S+   10:04   0:00 grep --color=auto mysql
[root@dbmaster ~]# ps aux | grep mysql | awk  '{print $2}'
105124
105310
158761
[root@dbmaster ~]#  ps aux | grep mysql | awk  '{print $2}' | xargs kill -9

3.删除以前mysql安装的文件或目录c++

[root@dbmaster ~]# find /  -name "mysql*"
find: ‘/run/user/1000/gvfs’: 权限不够
/sys/fs/selinux/booleans/mysql_connect_any
/etc/my.cnf.d/mysql-clients.cnf
............................
[root@dbmaster ~]# find /  -name "mysql*"  -exec  rm -rf {} \;

[root@dbmaster ~]# find /  -name "my.*"  -exec  rm -rf {} \;

2、安装mysql5.7版本
1.肯定本身的版本系统
[root@dbmaster ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)sql

2.安装依赖包
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
rpm -qa |grep libaio
yum install libaio libaio-devel数据库

3.下载源码包vim

https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25.tar.gz
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
注意:
Boost库是一个可移植、提供源代码的C++库,做为标准库的后备,是C++标准化进程的开发引擎之一。

4.建立用户和创建数据目录并赋予用户目录权限api

groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /data/mysql
chmod -R 755 /usr/local/mysql/ 
chmod -R 755 /data/mysql/

5.解压并开始安装bash

[root@dbslave ~]# tar -xf mysql-5.7.25.tar.gz
[root@dbslave ~]# cd mysql-5.7.25/
[root@dbslave mysql-5.7.25]# pwd
/root/mysql-5.7.25
[root@dbslave mysql-5.7.25]# tar -xf /root/boost_1_59_0.tar.gz  -C /root/mysql-5.7.25
[root@dbslave mysql-5.7.25]# ls
boost_1_59_0  cmake           config.h.cmake   dbug                 extra    libbinlogevents      libmysql     man         mysys_ssl  rapid   scripts     storage        testclients  vio
BUILD         CMakeLists.txt  configure.cmake  Docs                 include  libbinlogstandalone  libmysqld    mysql-test  packaging  README  sql         strings        unittest     win
client        cmd-line-utils  COPYING          Doxyfile-perfschema  INSTALL  libevent             libservices  mysys       plugin     regex   sql-common  support-files  VERSION      zlib
[root@dbslave mysql-5.7.25]#cmake . \
-DWITH_BOOST=boost_1_59_0/ \
-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

#############################
配置参数说明:
CMAKE_INSTALL_PREFIX :指定基础安装目录
MYSQL_DATADIR :指定数据目录
SYSCONFDIR=/etc :指定配置文件扫描目录
MYSQL_TCP_PORT :指定端口号
WITH_BOOST :指定boost所在目录
DEFAULT_CHARSET :指定默认字符集
DEFAULT_COLLATION :指定默认排序规则
ENABLED_LOCAL_INFILE=ON :是否为load data infile启用local
WITH_INNODB_MEMCACHED=ON :是否生成memcached共享库
提示:boost也能够使用以下指令自动下载,把下面参数添加到上面的命令里面
-DDOWNLOAD_BOOST=1

注:
-DWITH_EMBEDDED_SERVER=1   #支持嵌入式mysql服务器
-DWITH_SSL=system                    #使mysql支持证书登录

############################

7.编译&安装
[root@dbslave mysql-5.7.25]# make && make install服务器

8.初始化数据库

[root@dbmaster mysql-5.7.25]# cd /usr/local/mysql/
[root@dbmaster mysql]# mkdir mysql-files
[root@dbmaster mysql]# chown -R mysql.mysql .
[root@dbmaster mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

创建MySQL配置文件my.cnf

注意:源文件要备份一份,而后清空一份文件,写入如下内容

[root@dbslave mysql-5.7.25]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

9.启动mysql
方法一:使用mysqld_safe

[root@dbmaster mysql]# bin/mysqld_safe --user=mysql &
[root@dbslave mysql]# bin/mysqld_safe --user=mysql &
[1] 157556
[root@dbslave mysql]# Logging to '/usr/local/mysql/data/dbslave.err'.
2019-04-16T11:40:08.740986Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
^C
[root@dbslave mysql]# ps -aux | grep "mysql"
root     157556  0.0  0.0 113312  1644 pts/0    S    19:40   0:00 /bin/sh bin/mysqld_safe --user=mysql
mysql    157653  1.4  0.0 1156836 174616 pts/0  Sl   19:40   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=dbslave.err --pid-file=dbslave.pid
root     157703  0.0  0.0 112724   988 pts/0    S+   19:40   0:00 grep --color=auto mysql

方法二:使用 mysql.server脚本(system V)

[root@dbmaster mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@dbmaster mysql]# chkconfig --add mysqld
[root@dbmaster mysql]# chkconfig mysqld on
[root@dbmaster mysql]#  systemctl start  mysqld
[root@dbmaster mysql]# ps aux |grep mysqld
root     274965  0.0  0.0 113312  1644 pts/2    S    19:31   0:00 /bin/sh bin/mysqld_safe --user=mysql
mysql    275062  0.1  0.0 1156836 178368 pts/2  Sl   19:31   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=dbmaster.err --pid-file=dbmaster.pid
root     275582  0.0  0.0 112724   988 pts/2    S+   19:34   0:00 grep --color=auto mysqld

忘记MySQL密码:
MySQL 5.7.5 and earlier:

# vim /etc/my.cnf                    
[mysqld]
skip-grant-tables

# service mysqld restart
# mysql
mysql> update mysql.user set password=password("456") where user="root" and host="localhost";
mysql> flush privileges;
mysql> \q

# vim /etc/my.cnf                        
[mysqld]
#skip-grant-table
# service mysqld restart

MySQL 5.7.6 and later:              
[root@slave1 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables

#免密登陆

skip-grant-tables
[root@slave1 ~]# systemctl restart mysqld

[root@dbslave mysql]# mysql
bash: mysql: 未找到命令...
[root@dbslave mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@dbslave mysql]# source /etc/profile

####
更改密码:

mysql> update mysql.user set authentication_string=password('Cfgdcwhpmq2014') where user='root'
    -> ;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

######
建立新用户

grant all privileges on *.* to vnum@'%' identified by 'vnum@123';

更多细节请参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/updating-yum-repo.html