一、卸载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. Docker 学习之道: 容器注册表及其最佳实践

    容器注册表是Docker容器镜像的集中存储和分发系统.它允许开发人员以这些镜像的形式轻松共享和部署应用程序.容器注册表在容器化应用程序的部署中发挥着关键作用,因为它们提供了一种快速.可靠和安全的方式, ...

  2. 应用缺少POI数据,如何开发地点深度信息?

    用户在App里搜索某个地点时,并不满足单一的地点信息,希望得到更多可以帮助其做决策的深度信息.例如有打车出行需求的用户,在打车App里搜索地点时可以显示周边的地点,精确到某个路口,让用户可以自由选择合 ...

  3. HMS Core视频编辑服务:AI着色, 忆往昔看今朝

    近期热播的电视剧<人世间>,讲述了70年代无数普通人的故事,细腻的人物形象和真实的故事感动着我们.原来在那个年代,我们的父母和祖辈都在为新中国的美好生活而奋斗着,为国家舍弃了小家团聚的机会 ...

  4. SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算

    大气污染问题既是局部.当地的,也是区域的,甚至是全球的.本地的污染物排放除了对当地造成严重影响外,同时还会在动力输送作用下,极大地影响下风向地区的大气环境状况.数值模式模拟是分析大气污染物时空分布和成 ...

  5. Android 开发入门(1)

    0x01 准备 (1)概述 安卓(Android)基于 Linux 内核开发的操作系统,由 Google 等领导开发. (2)版本 Android 版本号 API 发布时间 Android 14 - ...

  6. sql 语句系列(行与列处理)[八百章之第一章]

    排序时对null进行处理 比如说: select * from EMP order by COMM 我需要对红框部分进行desc处理,也就是从大到小排列. 解析: 重点是如何让null独立出去. se ...

  7. CentOS7下安装Elasticsearch-7.3.2和Elasticsearch-head

    下载Elasticsearch-7.3.2-linux-x86_64.tar.gzElasticsearch下载地址:https://www.elastic.co/cn/downloads/elast ...

  8. 系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术

    ​简介:本篇以 first contact (通信两端建立首个连接) 场景为例,介绍 SMC-R 通信流程. ​ 文/龙蜥社区高性能网络SIG 一.引言 通过上一篇文章 <系列解读SMC-R:透 ...

  9. 网易数帆Curve加入PolarDB开源数据库社区

    ​简介:Curve社区签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手. Curve社区签署阿里 ...

  10. 阿里云日志服务SLS,打造云原生时代智能运维

    ​2021年10月21日,阿里云针对企业运维难题,在云栖大会为大家带来了一场<智能运维论坛>的主题演讲.在会上,阿里云资深技术专家.日志服务技术负责人简志提出"云原生时代,企业业 ...