[3]MySQL源码安装
查看服务器以前有没有mysql或者mariaDB
rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb
删除以前的数据库
rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64
#注:如上命令删除不成功,有别的软件依赖无法删除时,如下操作:
sudo yum remove mariadb-libs-5.5.50-1.el7_2.x86_64
#如果有,清除以往的数据库配置
sudo mv /etc/my.cnf /etc/mysql.cof.back
下载MySQL社区版源码
cd /download
#CentOS下载Linux通用的版本就可以了
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34.tar.gz
#tar解压
tar -zxvf mysql-5.7.34.tar.gz
#进入mysql文件夹
cd mysql-5.7.34
安装依赖
sudo yum install -y cmake make gcc gcc-c++ wget ncurses-devel cmake make perl ncurses-devel openssl-devel bison-devel libaio libaio-devel
创建应用目录和数据目录
sudo mkdir -p /usr/local/mysql
sudo mkdir /usr/local/mysql/data
创建mysql用户和用户组
# 创建用户组
groupadd mysql
# 创建mysql用户,所属组为mysql
useradd -s /bin/bash -m -g mysql mysql
创建MySQL目录
sudo mkdir -p /usr/local/mysql/data/bin_log
sudo mkdir -p /usr/local/mysql/data/db_file
sudo mkdir -p /usr/local/mysql/data/innodb_log
sudo mkdir -p /usr/local/mysql/data/innodb_ts
sudo mkdir -p /usr/local/mysql/data/log
sudo mkdir -p /usr/local/mysql/data/relay_log
sudo mkdir -p /usr/local/mysql/data/tmpdir
sudo mkdir -p /usr/local/mysql/data/undo_log
创建的目录的所属用户与所属组为mysql:mysql
sudo chown -R mysql:mysql /usr/local/mysql
cmake编译
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=boost
#选项说明:
-DCMAKE_INSTALL_PREFIX :安装路劲
-DMYSQL_DATADIR : 数据目录
-DMYSQL_TCP_PORT :端口号
-DMYSQL_UNIX_ADDR :套链接文件位置
#注:如果编译出现错误,请先删除CMakeCache.txt后,再重新编译:
rm -rf CMakeCache.txt
#如果安装报错:tar -zxvf boost_1_59_0.tar.gz 无法解压 请下载可用文件:
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
#同时cmake 选项:
#-DDOWNLOAD_BOOST=1 \
#-DWITH_BOOST=/usr/local/boost
#改成:
-DWITH_BOOST=/usr/local/boost/boost_1_59_0.tar.gz
#重新Cmake。
#如果出现下面的提示就表示成功生成了编译环境:
-- Configuring done
-- Generating done
编译安装后进入目录
sudo make && sudo make install
cd /usr/local/mysql
数据库初始化操作
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2021-05-26T00:52:37.703161Z 1 [Note] A temporary password is generated for root@localhost: ej6,Hg5&dSFZ
注: root@localhost: 为初始密码(记录下)
设置开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod +x /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/* /usr/local/bin/
ln -s /usr/local/mysql/bin/* /usr/bin/
chkconfig mysqld on
启动测试
systemctl start mysql
或者
service mysql start
初始化MySQL
编写配置文件
sudo vim /usr/local/mysql/my.cnf
[client]
port = 3306
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
plugin_dir=/usr/local/mysql/lib/plugin
log-error=/usr/local/mysql/data/error.log
#默认存储引擎INNODB
default-storage-engine=INNODB
skip-name-resolve
#禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
back_log = 384
#back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
key_buffer_size = 256M
#key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 4M
thread_stack = 256K
#table_cache = 128K
sort_buffer_size = 6M
#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
join_buffer_size = 8M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
myisam_sort_buffer_size = 64M
thread_cache_size = 64
query_cache_size = 64M
#指定MySQL查询缓冲区的大小。可以通过在MySQL控制台观察,如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。
tmp_table_size = 256M
max_connections = 768
#指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。
max_connect_errors = 10000000
wait_timeout = 10
#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
#thread_concurrency = 8
#该参数取值为服务器逻辑CPU数量*2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4*2=8
##skip-networking
#开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
innodb_flush_log_at_trx_commit=1
#设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1
innodb_log_buffer_size=2M
#默认为1M
innodb_thread_concurrency=8
#你的服务器CPU有几个就设置为几,建议用默认一般为8
read_rnd_buffer_size=16M
#默认为256K
sort_buffer_size=32M
#默认为256K
service mysql restart
并在my.cnf中开启或添加如下选项
配置mysql快捷命令
ln -s /usr/local/mysql/bin /usr/local/xxx
ln -s /usr/local/mysql/lib /usr/local/xxx
启动mysql
service mysqld start
登陆MySQL并修改密码
mysql -uroot -p
# 输入初始化最后的密码
# 登陆mysql需要修改root密码,否则会出现下列情况:
root@localhost : (none) 11:16:52> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#修改root密码
#三选一
1.set password='MYSQL';
2.ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
3. SET PASSWORD = PASSWORD('新密码');)
#刷新权限
FLUSH PRIVILEGES;
关闭mysql
service mysqld stop
启动MySQL远程访问
#1.防火墙开启3306端口(永久生效)
firewall-cmd --add-port=8001/tcp --permane
参考[https://jingyan.baidu.com/article/adc81513944addf723bf73af.html](https://jingyan.baidu.com/article/adc81513944addf723bf73af.html)
#2.添加MySQL用户和授权:
参考 [https://www.cxiansheng.cn/server/306](https://www.cxiansheng.cn/server/306)