一、卸载mariadb的rpm包

1、首先,你需要找出已安装的MariaDB包的具体名称。可以使用以下命令列出所有已安装的MariaDB包:

rpm -qa | grep mariadb

2、删除命令(安装mysql不一定需要卸载)
yum -y remove +【上图的文件名】或者rpm -e --nodeps +【上图的文件名】

二、通过yum在线安装Mysql

1、下载mysql源

(1)找到对应linux的版本进行下载、

[root@x86b ~]# cat /etc/redhat-release
CentOS Stream release 8

(2)下载mysql的rpm软件源
下载地址:https://dev.mysql.com/downloads/repo/yum/http://repo.mysql.com

#使用wget下载mysql(el8)
wget http://repo.mysql.com/mysql80-community-release-el8.rpm

2、安装mysql

(1)安装软件源
通过yum安装方法,会直接添加mysql环境变量和启动服务

yum -y install mysql80-community-release-el8.rpm

(2)安装MySQL服务器:community-server

yum -y install mysql-community-server

3、修改配置文件并启动服务

(1)修改配置文件
vim /etc/my.cnf添加配置

symbolic-links=0                   # 关闭mysql的符号链接
#skip-grant-tables # 忽略密码验证
port=3306 # mysql监听端口
character-set-server=utf8 # 指定mysql的字符集为utf8
lower_case_table_names=1 #(先不用加)

(2)启动服务并查看服务状态

systemctl start mysqld        #一定要启动服务!
systemctl status mysqld #查看服务状态

4、查看mysql初始密码并修改

(1)查看mysql初始密码

grep "password" /var/log/mysqld.log


(2)修改密码验证策略
通过初始密码登录mysql

mysql -u root -p <密码>
SHOW VARIABLES LIKE 'validate_password.%';

set global validate_password.policy=0;    //设置复杂度为0
set global validate_password.length=6; //设置最小长度6
set global validate_password.check_user_name=off; //设置用户名密码可以相同

【注】:当执行 SHOW VARIABLES LIKE 'validate_password.%' 时,显示的为 Empty set, 1 warning(0.00 sec)。

出现这个问题是因为并没有安装validate_password插件。具体操作如下:
# 每个平台的文件名后缀都不同对于Unix和类Unix系统为.so,对于 Windows为.dll

INSTALL PLUGIN validate_password SONAME 'validate_password.so'

(3)修改初始密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

若出现ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

ALTER USER 'root'@'%' IDENTIFIED BY '123456';

授权远程用户连接(改表法)

# 选择数据库
use mysql;
# 最后授权MySQL,允许远程用户登录访问MySQL
update user set host = '%' where user = 'root';
select host, user from user;
# 刷新权限
flush privileges;

5、查看3306端口是否开启

netstat -an|grep 3306

发现没有,然后需要在vim /etc/my.cnf文件中添加port = 3306然后保存
若还是不行,则登录到数据库里
(1)查看port参数

show global variables like 'port';

注意端口果然变成0了
(2)查看skip_networking参数

show variables like 'skip_networking';


果然设置了skip-networking参数,这个就是导致mysql监听的端口变成0,并且通过网络无法登录数据库的主要原因了
(3)查看cnf文件中是否有skip-networking参数或skip-grant-tables参数
注释掉后重启mysqld服务,再次查看3306端口就有了

6、排错

(1)ERROR 1146 (42S02): Table 'mysql.user' doesn't exist

一般是/etc/my.cnf写的地址与安装时指定的不一样
(2)ERROR! The server quit without updating PID file (/usr/local/mysql/data/x86a.pid)
可能已经存在mysqld进程

ps -ef  | grep mysql
pkill -9 mysqld

(3)ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

// 先执行:
flush privileges;
// 再执行修改密码命令就可以了:
set password for root@localhost=password('你的密码');

(4)error: mysql_real_connect failed: 1044 Access denied for user 'slurm'@'localhost' to database 'slurm_jobcomp_db'
远程连接用户权限不足,可以使用以下命令授予权限:

GRANT ALL PRIVILEGES ON slurm_jobcomp_db.* TO slurm@'localhost';
FLUSH PRIVILEGES;

若上面这一句又出现[Err] 1044 - Access denied for user 'root'@'%' to database ' slurm_jobcomp_db '
报错可以看出root没有权限,查询用户表看root用户权限

SELECT host,user,Grant_priv,Super_priv FROM mysql.user;

若root为N、N;则修改权限,执行如下:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

三、源码安装mysql

apt-get install mariadb-server libhdf5-dev libmunge-dev libmariadb-dev-compat

1、下载mysql并添加mysql用户

下载地址:https://downloads.mysql.com/archives/community/ 或 http://mirrors.sohu.com/mysql/

useradd -s /sbin/nologin mysql
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data

MySQL开在root上意味着它可以在系统的任何位置写任何文件,MySQL 开在mysql用户上,保证它对系统大部分位置不可写,从而MySQL即使被攻击,也可以限制它对整个系统的影响。
        当让MySQL运行的时候使用一个独立的账号和用户组时,该用户和用户组权限是可以控制的。当系统中文件的权限未设定给Mysql用户以及用户组时,Mysql用户无法进行读写执行操作。而如果MySQL被黑了,可以通那么开始拿到的权限就是那个创建的账号而不是默认的root,我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql。
        在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全。

2、cmake配置并编译安装

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #Unix socket文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装innodb存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \ #安装数据库分区
-DDEFAULT_CHARSET=utf8 \ #使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/usr/local/boost

make && make install

3、创建my.cnf配置文件

(1)vim /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql # mysql安装目录
datadir=/usr/local/mysql/data # mysql数据存放目录
socket=/usr/local/mysql/mysql.sock # mysql.sock文件存放目录
user=mysql
symbolic-links=0 # 关闭mysql的符号链接
skip-grant-tables # 忽略密码验证 [mysqld_safe]
port=3306 # mysql监听端口
character-set-server=utf8 # 指定mysql的字符集为utf8
log-error=/usr/local/mysql/mysqld.log # 指定mysql的错误日志存放路径
pid-file=/usr/local/mysql/mysqld.pid # mysql的pid文件存放目录
# The end

修改配置文件权限
chmod 600 /etc/my.cnf
【注意】:所有my.cnf指定的目录mysql用户都要有读写权限。symbolic-links符号链接支持在别的目录下存放mysql的数据库文件,当我们mysql数据盘满了以后,可以启动symbolic-links=1,把mysql的数据放在别的目录下,然后链接到mysql的datadir目录下。
(2)设置mysql目录权限

chown -R mysql:mysql /usr/local/mysql

4、设置mysql服务

(1)将mysql设置成系统服务,生成服务启动脚本

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

(2)添加MySQL开机自启

chkconfig --add mysqld  //把mysql添加到系统服务
chkconfig mysqld on //把mysql添加到开机自启动
chkconfig --list mysqld //查看mysql开机自启动状态

(3)配置环境变量

vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh 

5、启动mysql服务

(1)初始化数据库
如果无法启动mysql

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

【注意】:初始化完后会生成一个初始密码,在界面上显示,保存下来。一会修改密码需要用到:omrI&?hGw8li(--initialize-insecure是不设置密码)
(2)启动mysql服务

systemctl start mysqld(/etc/init.d/mysqld start)
systemctl status mysqld

(3)修改密码

mysql -u root -p
update mysql.user set authentication_string=password('123456') where user='root'; 

6、mysql源码编译安装常见错误

(1)错误:CMake Error at cmake/boost.cmake:194 (MESSAGE):

问题描述:高版本mysql需要boots库的安装才可以正常运行
根据错误提示,进行处理
i、在/usr/local下创建一个名为boost的文件夹
mkdir -p /usr/local/boost
ii、进入这个新创建的文件夹然后下载boost
下载地址:https://sourceforge.net/projects/boost 或 https://sourceforge.net/projects/boost/files/boost/
iii、解压
tar -zxvf boost_1_59_0.tar.gz -C boot
iv、继续cmake,添加下面的部分
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost(2)错误:CMake Error at cmake/readline.cmake:64 (MESSAGE):

问题描述:没有安装ncurses-devel
i、解决办法:yum install ncursrs-devel -y
然后重新编译
ii、源码安装ncurses-devel方式解决
下载地址:http://ftp.gnu.org/gnu/ncurses/

tar -zxvf ncurses-6.4.tar.gz
./configure --with-shared --without-debug --without-ada --enable-overwrite
make && make install 

(3)错误:CMake Error at rapid/plugin/group_replication/rpcgen.cmake:100 (MESSAGE):

解决办法:安装rpcsvc
下载地址:https://github.com/thkukuk/rpcsvc-proto/releases

tar -zxvf rpcsvc-proto-1.4.3.tar.gz
./autogen.sh
./configure
make & make install

(4)openssl

(5)Package 'libtirpc', required by 'virtual:world', not found

解决方法:安装libtirpc-devel(https://rpmfind.net/linux/RPM/

(6)mysql登陆报错mysql Segmentation fault (core dumped)

解决办法:在源码包里,编辑文件mysql-5.6.38/cmd-line-utils/libedit/terminal.c(mysql安装包所在路径)
把terminal_set方法中的char buf[TC_BUFSIZE];这一行注释,再把area=buf;改为area=NULL;
更改后如下部分

protected int
terminal_set(EditLine el, const char *term)
{
int i;
/*char buf[TC_BUFSIZE];*/
char *area;
const struct termcapstr *t;
sigset_t oset, nset;
int lins, cols;
--phpfensi.com
(void) sigemptyset(&nset);
(void) sigaddset(&nset, SIGWINCH);
(void) sigprocmask(SIG_BLOCK, &nset, &oset);
area = NULL;

然后重新编译即可

cmake  ******
make && make install

  

 

联网安装与源码安装mysql的更多相关文章

  1. Linux 中mysql安装(源码安装方式)

    本文是介绍以源码安装的方式编译和安装Mysql 5.6(可以指定安装路径),也可以不采用源码安装方式,直接用安装包的方式. 源码安装方式慎用,容易报错. 1.卸载旧版本 rpm -qa | grep ...

  2. Linux应用和系统库的2种安装方式---源码安装tarball和二进制rpm包

    一.应用程序和系统库从哪里来? 两种机制,源码安装和二进制安装. 二.源码安装 tarball 1.核心思想是:利用开源代码,自己编译生成应用程序或者库,要求系统上必须已安装TMG(tar, make ...

  3. linux下的wireshark最新版安装(源码安装)以及一些常见问题

    源码安装教程 http://www.cnblogs.com/littleTing/p/3765589.html 1.下载wireshark: 网址:http://www.wireshark.org/d ...

  4. linux操作之软件安装(二)(源码安装)

    源码安装 linux上的软件大部分都是c语言开发的 , 那么安装需要gcc编译程序才可以进行源码安装. yum install -y gcc #先安装gcc 安装源码需要三个步骤 1) ./confi ...

  5. Linux软件安装管理---源码安装

    在Linux平台下,软件包的类型可以划分为两类:源码包.二进制包. 源码包: 即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包). 二进制包: 如 Red Hat ...

  6. Zabbix的安装(源码安装)

    zabbix3.0完全安装 安装zabbix首先需要安装ltmp(lnmp),这里的t是指tengine(taobao的nginx版本),安装教程见 http://www.ltmp.cc 安装的时候P ...

  7. LAMP动静分离安装(源码安装)

    环境: 版本 IP地址 源码包版本 Centos7.5_mysql 192.168.111.3 mysql-5.7.24.tar.gz,cmake-3.13.1.tar.gz,boost_1_59_0 ...

  8. Nginx安装之源码安装

    nginx部署 1. 安装依赖 yum install gcc gccc++ pcre pcre-devel zlib zlib-devel openssl openssl-devel-y 2. 下载 ...

  9. Redis安装(源码安装)

    安装环境(redis3.0以上才支持集群部署) 1.服务器环境:linux Centos release 6.8 2.Redis版本(2.8.13)下载地址:http://download.redis ...

  10. 如何在 Linux 上安装 Nginx (源码安装)

    如何在 Linux( CentOS ) 上安装 Nginx 1.下载 nginx 链接 : https://pan.baidu.com/s/1sll0Hrf 密码 : xnem 2.安装 gcc ( ...

随机推荐

  1. openGauss/MogDB零字节问题处理

    openGauss/MogDB 零字节问题处理 问题描述:java 应用端程序调用 GZIP 压缩类对数据进行编码压缩后入库 ,然后从数据库取出进行解压,原来再 mysql 数据库中是正常的,但迁移到 ...

  2. openGauss Sqlines 使用指导

    openGauss Sqlines 使用指导 Sqlines 简介 Sqlines 是一款开源软件,支持多种数据库之间的 SQL 语句语法的的转换,openGauss 将此工具修改适配,新增了 ope ...

  3. Maven 三种archetype说明合集【转载】

    Maven 三种archetype说明 新建Maven project项目时,需要选择archetype. 那么,什么是archetype? archetype的意思就是模板原型的意思,原型是一个Ma ...

  4. 重新点亮shell————awk数组[十四]

    前言 简单介绍一下awk的数组. 正文 数组的定义: 数组的遍历: 删除数组: 例子: 例子2: 结 下一节awk函数.

  5. arp 的基础概念

    前言 打算整理网络这一块,先把概念写完. 就是有一个问题,那就是为什么有ip地址还有mac地址呢? 原因是这样子的,我们知道ip协议是第三层,那么有一个问题了,如果只有第三层的ip是否能过识别到主机? ...

  6. gitee基于webhooks实现前端简单自动化部署

    1.为什么采用自动化部署 简而言之,程序员优秀传统:懒 =>高级生产力. 基于gitee进行的自动化部署,服务器环境为Ubuntu 基于webhooks进行的自动化部署更加轻快便捷 2.部署步骤 ...

  7. IDEA操作MyBatis实现数据库增删改查

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 前置环境 ...

  8. 阿里云RemoteShuffleService 新功能:AQE 和流控

    ​简介:阿里云EMR 自2020年推出 Remote Shuffle Service(RSS)以来,帮助了诸多客户解决 Spark 作业的性能.稳定性问题,并使得存算分离架构得以实施.为了更方便大家使 ...

  9. 国内唯一!阿里云容器服务进入 Forrester 领导者象限

    ​简介:近日,国际权威咨询机构 Forrester 发布< The Forrester WaveTM: Public Cloud Container Platforms, Q1 2022 > ...

  10. 重温设计模式之 Factory

    简介: 创建型模式的核心干将,工厂.简单工厂.抽象工厂,还记得清么,一文回顾和对比下. 作者 | 弥高来源 | 阿里技术公众号 前言 创建型模式的核心干将,工厂.简单工厂.抽象工厂,还记得清么,一文回 ...