admin管理员组

文章数量:1598066

文章目录

  • 编译mysql
    • 一、下载源码
    • 二、准备安装其他需要软件(龙芯平台上cmake和gcc不需要变动,如果是windows的虚拟机要安装高版本mysql才需要变)
      • 1、cmake
      • 2、重新安装gcc高版本
      • 3、配置、编译、安装
      • 4、报错误
      • 5、数据库用户
      • 6、创建数据存放目录并修改权限
      • 7、修改配置文件(根据自己的情况来配置)
      • 8、初始化数据库并安装ssl
      • 9、复制启动脚本、启动
      • 10、修改mysql密码(忘记密码)

编译mysql

本文在龙芯Loongson-3A3000版上编译mysql5.7,操作系统是中标麒麟(龙芯版)

NeoKyLin Linux Desktop 7.0_U2 (Loongson)。由于需要移植的数据库是mysql5.7,但龙芯的芯片是基于MIPS微指令集扩展的,与Windows的x86架构不匹配,所以绝对不能直接从Mysql官网上下载,但Windows的虚拟机是可以直接下载的。这里提供一些查看硬件与软件的指令

#查看内核版本
uname -a
#linux 系统版本的方法 
lsb_release -a  #(此命令适用于所有的Linux发行版本)
 

cat /etc/redhat-release  #(此方法只适合Redhat系的Linux)


cat /etc/issue    #(此命令适用于所有的Linux发行版本)
#查看CPU
cat /proc/cpuinfo

一、下载源码

这里官网给出了两种版本,一个是带boost一个是不带的,这次先尝试编译带boost库的mysql

Mysql官网下载地址

删除centos自带数据库
使用以下命令查找出安装的mysql软件包和依赖包:rpm -pa | grep mysql

如果有的话,可能的显示结果和操作方法如下

mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.11-1.el7.x86_64
mysql-community-common-8.0.11-1.el7.x86_64
mysql-community-libs-8.0.11-1.el7.x86_64
mysql-community-client-8.0.11-1.el7.x86_64
#使用以下命令依次删除上面的程序
 
yum remove mysql-xxx-xxx-

删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件;find / -name mysql

如果有的话,可能的显示结果和操作方法如下``

/etc/logrotate.d/mysql
/etc/selinux/targeted/active/modules/100/mysql
/etc/selinux/targeted/tmp/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib64/mysql
/usr/local/mysql

使用rm - rf 删除所有的

rm -rf /var/lib/mysql .... .... .... ....
 

或者尝试管道符

find / -name mysql | rm - rf

幸运的是,这里都没有安装过mysql,但是有其他的配置文件,这里查找的内容最好都删除了(大胆点哦)

由于MySQL在CentOS7中收费了,所以已经不支持MySQL了,取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突,所以一定需要先卸载掉MariaDB.

使用rpm 命令查找出要删除的mariadb文件;

rpm -pa | grep mariadb
#可能的显示结果如下:
#mariadb-libs-5.5.56-2.el7.x86_64 
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 #删除上面的程序
 

二、准备安装其他需要软件(龙芯平台上cmake和gcc不需要变动,如果是windows的虚拟机要安装高版本mysql才需要变)

1、cmake

先卸载之前的低版本的cmake

yum remove cmake -y

编译安装cmake

2.1、解压cmake并进入目录

tar zxf cmake-3.15.0-rc1.tar.gz

cd cmake-3.15.0-rc1

2.2、配置、编译、安装

./configure --prefix=/usr/local/cmake

make

make install

#--prefix 参数是配置cmake的安装目录

2.3、做cmake命令软连接,查看cmake版本

ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
cmake --version

编译后的目录

2、重新安装gcc高版本

1、下载源码包

cd /usr/local/src
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz

2、进入gcc目录,安装gcc依赖库

cd gcc
./contrib/download_prerequisites

../configure --prefix=/usr/local/gcc-8.3.0 --enable-languages=c,c++ --disable-multilib

这个操作时间太长了,经历了将近2小时后放弃

开始使用yum来按照

通过安装devtoolset来提升版本

  1. 使用 sudo yum install centos-release-scl 来安装centos-release-scl

  2. 安装devtoolset:sudo yum install devtoolset-8-gcc

  3. 激活安装的devtoolset;scl enable devtoolset-8 bash

然后用gcc -v检查一下gcc的版本

注意:这种方式安装后每次重启gcc的版本可能会变成原来低版本的。重新输入激活安装的语句,再次检查gcc版本就好。或者可以将bin目录下的gcc换成高版本的。

3、配置、编译、安装

在mysql的安装目录下建立一个bld目录

mkdir bld
#进入bld目录
cd bld
#然后执行以下命令

cmake:

cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 安装根目录
-DMYSQL_DATADIR=/data/3306/data \ 数据存储目录
-DSYSCONFDIR=/data/3306 \ 配置文件(myf)目录 (貌似没用,配置文件依然在/etc/myf)
-DWITH_MYISAM_STORAGE_ENGINE=1 \ 编译myisam存储引擎,默认的存储引擎,不加也可以
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ 支持InnoDB存储引擎,这个也是默认安装的
-DWITH_MEMORY_STORAGE_ENGINE=1 \ 支持MEMORY引擎
-DWITH_READLINE=1 \ 使用readline功能
-DMYSQL_UNIX_ADDR=/data/3306/mysql.sock \ sock存放到/data/3306目录
-DMYSQL_TCP_PORT=3306 \ 数据库端口
-DENABLED_LOCAL_INFILE=1 \ 可以使用load data infile命令从本地导入文件
-DWITH_PARTITION_STORAGE_ENGINE=1 \ 安装数据库分区
-DEXTRA_CHARSETS=all \ 支持所有字符集
-DDEFAULT_CHARSET=utf8 \ 默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \ 设置默认效验字符集排序规则,要和DDEFAULT_CHARSET一起用
-DWITH_BOOST=boost 从MySQL 5.7.5开始Boost库是必需的
然后就是make和make install

以下是我的输入

cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/src/mysql-8.0.20/boost \
-DFORCE_INSOURCE_BUILD=0 \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DDEFAULT_CHARSET=utf8

注意:cmake这步特别重要,需要着重看DWITH_BOOST=自己mysql源码下的boost目录(第一个就行)

DCMAKE_CXX_COMPILER=这个填写自己的g++目录。可以使用whereis g++。找到usr/bin/下面的。一定要测试一下这个g++是哪个版本的,如果编译mysql8必须是5以上的高版本的

然后(这步不需要网络)

make 或者make -j4 (开启四个进程去编译,但不要超过自己电脑的处理器数量,用上面查看CPU的命令)

make install

4、报错误

更多的错误解决方式请参照解决方案

5、数据库用户

useradd -s /sbin/nologin mysql

6、创建数据存放目录并修改权限

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

7、修改配置文件(根据自己的情况来配置)

这里我找不到自己的配置文件在哪

从Oracle官方了解到:mysql5.7.18 开始不在二进制包中提供 my-defaultf 文件。

修改配置文件的目的是为了下一步初始化的操作,我们可以在下一步通过命令行来实现(也就是说可以跳过这部)。

但对于更低版本的有如下方式寻找

#首先查找mysqld,这里我是找不到的,但可以直接去安装目录的bin下寻找
which mysqld
#第二步,先输入自己的mysqld的完整目录
/usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'

然后使用vim修改配置文件

[mysqld]
port=3306
server-id=1
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock

[client]
socket=/usr/local/mysql/mysql.sock

这里提供一个更完整配置文件介绍

我的这步出错了。socket后面写成mysql的可执行文件了,直接导致mysql可执行文件不能使用。第二章图看到mysql可执行文件变为紫色

这步查找了为什么mysql可执行文件不能使用

1.设置到系统路径下

2.在本目录下使用./

3.确认命令格式是否正确

4.查找命令权限。ls -al和file(file是查找文件类型的)

在编译每一步完成后最好都加上快照。实验得出,在挂起状态下快照,占用空间更少。

重新make(这步速度快的话大概一小时左右),然后继续配置

接着make install(这步速度很快,几分钟就好 )

8、初始化数据库并安装ssl

如果上一步配置了配置文件的话,这里使用这个命令

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

9、复制启动脚本、启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld  start

设置开机自启

先将/usr/local/mysql/mysql/support-files/ 文件夹下的mysql.server文件复制到 /etc/rc.d/init.d/ 目录下mysqld

 cp /usr/local/mysql/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
#赋予可执行权限:
chmod +x /etc/init.d/mysqld
#添加为服务: 
chkconfig --add mysqld
#查看服务列表: 
chkconfig --list

看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysqld on

reboot   #重启计算机:

再次查看服务列表或者查看3306端口号

netstat -na | grep 3306

启动成功!!

10、修改mysql密码(忘记密码)

登录mysql后直接执行更改命令,如果不行的话执行后面的

#先配置环境变量
#在/etc/profile中添加:
export PATH=$PATH:/usr/local/MySQL/bin就OK
alter user 'root'@'locahost' identified by 'admin123‘;

10.1在配置文件中的[mysqld]下加入skip-grant-tables(在[mysqld]范围内任意行加入都可以)

vim /etc/myf
      [mysqld]
      skip-grant-tables

10.2重启mysql

/etc/init.d/mysqld restart

10.3登录数据库后,修改密码为空。

mysql
    mysql >use mysql;
    mysql >update user set authentication_string="" where user='root';
    mysql >flush privileges;
    mysql > exit;
#大家可以使用下面的语句测试是否修改

10.4在配置文件中删除skip-grant-tables并重启mysql

/etc/init.d/mysqld restart

10.5登录mysql,修改密码

mysql -uroot -ppassword
     mysql>alter user 'root'@'locahost' identified by 'admin123‘;
     mysql>flush privileges;
     mysql>exit;

这里修改密码出现了问题,尝试了好几种修改密码的语句。最后问题出在mysql8的密码政策改变了,密码必须满足

### 密码必须包含两个大写字母 、特殊符号、 字母、 数字

特殊字符可以是@

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'RootPwd@123456';

以上就是mysql的数据展示

本文标签: 详解龙芯电脑