云服务器从购买到部署环境lnmp(完)

三、源码安装最新MySQL8.0.11

MySQL8.0版本比MySQL5.7要快2倍,更快的性能和大量的改进
MySQL8.0版本简介 https://www.cnblogs.com/mr7664/articles/9857621.html

3.1安装Mysql

3.1.1下载

MySQL下载地址:http://dev.mysql.com/get/Downloads/MySQL-8.0.11/mysql-8.0.11.tar.gz(建议)

流程参考2.2.1

或者

wget -c http://dev.mysql.com/get/Downloads/MySQL-8.0.11/mysql-8.0.11.tar.gz/from/http://cdn.mysql.com/
3.3.2安装相关依赖包
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel bison
3.1.3解压

cd /data/Software(你刚才把压缩包复制到的位置)

tar -zxvf mysql-8.0.11.tar.gz 
3.1.4创建存放目录

用作软件存放目录

mkdir /etc/mysql

用作数据存放目录

mkdir -p /data/mysqldata/3306
3.1.5安装前的配置,指定安装目录

跳转到刚才解压好的目录下

cd /data/Software/mysql-8.0.11
注意:这里指定了刚才创建的1软件存放目录2数据存放目录
cmake -DCMAKE_INSTALL_PREFIX=/etc/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNODB_MEMCACHED=ON -DWITH_SSL=system -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DCOMPILATION_COMMENT="zsd edition" -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock -DSYSCONFDIR=/data/mysqldata/3306
3.1.5编译和安装
使用SWAP创建交换分区 并 开启
dd if=/dev/zero of=/swapfile bs=64M count=16	

注:block_size、number_of_block 大小可以自定义,比如 bs=64M count=16代表设置 1G 大小 SWAP 分区。

mkswap /swapfile
swapon /swapfile

如果不交换分区,可能好内存不足,出现以下情况

在这里插入图片描述
出现error,内存不足,使用临时分区。毕竟我的阿里云是1核+2G内存。。


make很慢,我花了1个多小时
make

在这里插入图片描述

make install

在这里插入图片描述

安装成功!

清理编译文件
make clean
关闭分区,并删除交换文件
swapoff /swapfile
rm /swapfile

结果

在这里插入图片描述

3.2配置MySQL环境等

3.2.1创建一个用户组mysql和其下的用户mysql
如果你想删除某用户和用户组↓
删除用户名
cd/home
vipw
删除对应用户名:wq保存
删除用户组
cd /home
vipw -s
删除对应用户组:wq!强制保存


查看用户组
cat /etc/group
vi /etc/group
再次删除:wq保存
添加用户组、用户名
groupadd mysql

useradd -g mysql mysql
3.2.2设置用户操作系统的资源限制
vi /etc/security/limits.conf

在文档底下添加

mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536
验证limit是否生效
su - mysql
ulimit -a
返回root用户,因为下面需要创建目录还有chmod给权限
su root 

在这里插入图片描述

3.2.3创建MySQL数据目录及赋予相应权限
mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,innodb_ts,innodb_log},backup,scripts}
chown -R mysql:mysql /data/mysqldata
su - mysql
3.2.4配置my.cnf文件
vi /data/mysqldata/3306/my.cnf


[client]
port = 3306
socket = /data/mysqldata/3306/mysql.sock
# The MySQL server
[mysqld]
port = 3306
user = mysql
socket = /data/mysqldata/3306/mysql.sock
pid-file = /data/mysqldata/3306/mysql.pid
basedir = /etc/mysql
datadir = /data/mysqldata/3306/data
tmpdir = /data/mysqldata/3306/tmp
open_files_limit = 60000
explicit_defaults_for_timestamp
server-id = 1203306
lower_case_table_names = 1
character-set-server = utf8
federated
#sql_mode=STRICT_TRANS_TABLES
max_connections = 1000
max_connect_errors = 100000
interactive_timeout = 86400
wait_timeout = 86400
sync_binlog=0
back_log=100
default-storage-engine = InnoDB
log_slave_updates = 1

#*********** Logs related settings ***********
log-bin = /data/mysqldata/3306/binlog/mysql-bin
binlog_format= mixed
binlog_cache_size=32m
max_binlog_cache_size=64m
max_binlog_size=512m
long_query_time = 1
log_output = FILE
log-error = /data/mysqldata/3306/mysql-error.log
slow_query_log = 1
slow_query_log_file = /data/mysqldata/3306/slow_statement.log
#log_queries_not_using_indexes
general_log = 0
general_log_file = /data/mysqldata/3306/general_statement.log
#expire-logs-days = 14
binlog_expire_logs_seconds = 1728000
relay-log = /data/mysqldata/3306/binlog/relay-bin
relay-log-index = /data/mysqldata/3306/binlog/relay-bin.index
#****** MySQL Replication New Feature*********
master-info-repository=TABLE
relay-log-info-repository=TABLE
relay-log-recovery
#*********** INNODB Specific options ***********
innodb_buffer_pool_size = 2048M
transaction-isolation=REPEATABLE-READ
innodb_buffer_pool_instances = 8
innodb_file_per_table = 1
innodb_data_home_dir = /data/mysqldata/3306/innodb_ts
innodb_data_file_path = ibdata1:2048M:autoextend
innodb_thread_concurrency = 8
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_log_group_home_dir = /data/mysqldata/3306/innodb_log
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 70
innodb_flush_method=O_DIRECT
[mysql]
no-auto-rehash
default-character-set=gbk
prompt = (\u@\h) [\d]>\_
3.2.5初始化MySQL
/etc/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --initialize --user=mysql
3.2.6启动MySQL服务
/etc/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql
如果卡住就Ctrl+z直接挂起
完成

在这里插入图片描述

查看错误日志(可忽略!!跳至3.2.7)
cat /data/mysqldata/3306/mysql-error.log

在这里插入图片描述

问题1:Ignoring…显示用户被忽略,权限问题(上面步骤已更改。请忽略!!)
解决:增加权限
chown -R mysql:mysql /etc/mysql
结果:没有Ignoring错误
/etc/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=root

cat /data/mysqldata/3306/mysql-error.log

在这里插入图片描述

问题2:找不到errmsg.sys文件(my.cnf路径问题,上面的配置已改。请忽略!!)
查看文件是否存在
find / - name errmsg.sys

在这里插入图片描述

存在,打开my.cnf查看

在这里插入图片描述

解决:更改my.cnf中basedir目录

在这里插入图片描述

结果:错误解决

/etc/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql

cat /data/mysqldata/3306/mysql-error.log

在这里插入图片描述

问题3:找不到mysql-bin.index文件(目录和权限问题,上面步骤已更改。请忽略!!)
查找文件是否存在
find / -name mysql-bin.index

在这里插入图片描述

不存在…
查看my.cnf配置文件
vi /data/mysqldata/3306/my.cnf

在这里插入图片描述

到目录底下看看
cd /data/mysqldata/3306/
ls
没有发现binlog

在这里插入图片描述

解决:再执行一遍(原因是之前用mysql用户来创建目录和赋予权限没有成功)
mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,innodb_ts,innodb_log},backup,scripts}
chown -R mysql:mysql /data/mysqldata
再初始化一次然后启动
/etc/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --initialize --user=mysql
/etc/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql

在这里插入图片描述

一直卡住因为找不到mysql.sock,直接Ctrl+z
因为是safe守护进程所以kill不掉,这里选择踢掉用户关闭。或者重连一次连接
ps -ef|grep mysql(查看pts/几)
pkill -kill -t pts/(几)
/etc/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql
3.2.7登陆数据库
cat /data/mysqldata/3306/mysql-error.log

在这里插入图片描述

显示可以连接了!

查看mysql初始密码
grep 'password' /data/mysqldata/3306/mysql-error.log

在这里插入图片描述

密码是root用户的
复制密码粘贴登陆
/etc/mysql/bin/mysql -u root -p
登陆成功

在这里插入图片描述

3.2.8修改root密码

设置为本地登录权限,使用sha256_password加密,360天密码过期

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root' PASSWORD EXPIRE INTERVAL 360 DAY;

查看user

mysql> select user,host from mysql.user;

在这里插入图片描述

3.2.9配置环境变量(启动直接输入mysql而不用输入一堆路径)
vi /etc/profile.d/mysql.sh

将下面这句放入新建的文件中

export PATH=$PATH:/etc/mysql/bin

执行

source /etc/profile.d/mysql.sh

在这里插入图片描述

3.3设置systemctl服务启动方式并开机自启动

复制mysql.server

cp /etc/mysql/support-files/mysql.server /etc/init.d/mysql

添加可执行权限

chmod +x /etc/init.d/mysql

设置开机自动启动

systemctl enable mysql

3.4设置远程访问MySQL

3.4.0如果想远程连接,需要在你的windows安装一个Navicat软件

3.4.1远程连接配置

mysql> use mysql;

mysql> select host,user,authentication_string,plugin from user;
发现所有的用户host都是显示localhost,(刚才初始化密码设的localhost)都是只有本地权限

在这里插入图片描述

mysql> update user set host='%' where user='root';

在这里插入图片描述

mysql> flush privileges;
3.4.2设置防火墙
查看防火墙状态
systemctl status firewalld

在这里插入图片描述

都是关闭的,配置下防火墙

启动防火墙

systemctl start firewalld

超时

在这里插入图片描述

关闭再使用pkill杀下进程再启动
systemctl stop firewalld
pkill -f firewalld
systemctl start firewalld

在这里插入图片描述

systemctl status firewalld
启动成功

在这里插入图片描述

查看防火墙端口开启状态

在这里插入图片描述

无开放端口
永久添加22、3306、80端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart 	firewalld
firewall-cmd --list-ports

在这里插入图片描述

3.4.2使用navicat远程连接

这里的常规是连接阿里云服务器中的mysql,使用的是mysql的账号密码

在这里插入图片描述

这里的SSH是连接阿里云服务器,使用的服务器的账号密码

在这里插入图片描述

点击“连接测试”

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值