目录
参考的别人的文章:https://blog.csdn.net/qq_40181063/article/details/90713153
一、查找并卸载原有的mysql数据库
1.使用 rpm -qa | grep mysql 命令查找mysql数据库软件包及依赖包;
若没有任何显示则证明没有相关的mysql数据库;
若显示了相关的软件包及依赖包,使用 yum remove xxx 命令依次删除显示的包;注意:xxx为显示的软件包及依赖包包名;
2.使用 find / -name mysql 命令查找原有mysql数据库的相关配置文件;
可能显示如下:
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
/usr/share/mysql
然后根据需求情况使用命令 rm -rf xxx 依次删除以上文件,例如:rm -rf /etc/selinux/targeted/active/modules/100/mysql;
二、查看mariadb的相关包并卸载
1.使用 rpm -qa | grep mariadb 命令查看;
显示为:mariadb-libs-5.5.56-2.el7.x86_64
2.使用 rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 命令卸载;
3.使用 rm /etc/my.cnf 删除my.cnf文件(这个文件可能不存在,没关系的),防止对新安装的数据库有冲突,后面会再新建一个my.cnf文件;
三、安装mysql数据库
mysql官网:https://dev.mysql.com/downloads/mysql/
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
1.使用wget命令从官网下载最新版本(即8.0.16 64位),其余版本操作一样,需自行到官网下载;
命令为:wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
下载后文件为:mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
2.解压缩包,命令如下;
xz –d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar
3.给包重命名为mysql,并安装到/usr/local/目录下;
mv mysql-8.0.16-linux-glibc2.12-x86_64 /usr/local/mysql
4.检查mysql组和用户是否存在,如无创建,
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
创建mysql用户组
groupadd mysql
useradd -g mysql mysql
修改用户mysql的密码为mysql(自己设定)
passwd mysql
5.进入mysql目录并创建data目录;
cd /usr/local/mysql
mkdir data
6.赋权限给相关目录;
先返回上级目录,防止提示找不到对应目录
cd ..
chmod -R 777 /usr/local/mysql
chmod -R 777 /usr/local/mysql/data
7.将mysql目录的权限授给mysql用户和mysql组;
chown -R mysql:mysql /usr/local/mysql
8.新建mysql配置文件 my.cnf
vi /etc/my.cnf
配置文件内容为;
[mysqld]
skip-name-resolve
#设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/opt/mysql/mysql8
# 设置mysql数据库的数据的存放目录
datadir=/opt/mysql/mysql8/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_names=1 #该行必须注释,否则会出现 without updating PID file....
max_allowed_packet=16M
socket=/var/lib/mysql/mysql.sock
[client]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
socket=/var/lib/mysql/mysql.sock
[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
socket=/var/lib/mysql/mysql.sock
9.进入mysql 安装目录下:
cd/usr/local/mysql/bin/
安装MySQL,并记住随机生成的密码,每次生成都不一样:
./mysqld --initialize --console
==================以下内容搭建时未遇到==========
这里可能会出现如下错误(我在配置阿里云服务器时遇到的,原因可能是新的系统,没有安装所需的依赖)
解决办法就是根据提示安装所需依赖:这里我安装后就可以了,没有继续报错
======================END===========================
10.修改config配置,修改SELINUX=disabled
vi /etc/selinux/config
11.创建软连接(实现可直接命令行执行mysql)
ln -s /usr/local/mysql/bin/mysql /usr/bin(软连接必须建在/usr/bin,否则不生效)
12.mysqld配置,拷贝启动文件到/etc/init.d/下并重命名为mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
增加执行权限
chmod 777 /etc/init.d/mysqld
检查自启动项列表中没有mysqld
chkconfig --list mysqld
如果没有就添加mysqld
chkconfig --add mysqld
设置开机启动
chkconfig mysqld on
启动测试
service mysqld start
接着我们使用前面随机生成的密码登录mysql数据库,再重置密码;
mysql -u root -p(回车后输入前面的随机密码)此处的密码就是第9步中的生成的密码
如上图,登录成功;
在mysql中修改密码为123456;
set PASSWORD = '123456';
四、开启mysql的远程访问权限
创建用户root设置密码123456
create 'root'@'%' identified by '123456';
给用户授权
grant all on *.* to 'root'@'%' with grant option;
flush privileges;
退出exit
重新启动mysql即可
service mysql restart
出现错误:很多都是mysql的配置文件中已存在的路径,由于没有在服务器中出现导致搜索不到报错;
1.Linux安装MySQL时候出现log-error set to '/var/log/mariadb/mariadb.log', however file don't exists.
发现并没有/var/log/mariadb/mariadb.log这个路径,那我们就创建, 并给mysql用户授权即可
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
再输入开启mysql服务, 搞定!
出现故障排查:
端口是否打开
lsof -i:3306
mysql服务是否运行
service mysqld status
检查mariadb,同样检查服务是否运行
service mariadb status
查看mysql.sock文件是否存在
ls /var/lib/mysql/mysql.sock
================================================================================================
参考:
查看防火墙状态
firewall-cmd --state
如果没有开启,则开启
开启防火墙: systemctl start firewalld.service
查看监听的端口: firewall-cmd --list-port
添加3306端口监听
firewall-cmd --zone=public --add-port=3306/tcp --permanent
刷新防火墙设置
firewall-cmd --reload
navicate在连接时出现的错误:
1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。
出现上述问题的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password 把mysql用户登录密码加密规则还原成mysql_native_password
1.查看MYSQL数据库中所有用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
2.修改加密规则,因为最新版的加密规则好像不一样,安装的过程当中是有提示的。
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
3.修改用户的认证规则
mysql> alter user '用户名'@'%' identified with mysql_native_password by '密码';
例如我的用户名是admin,密码是123456,那么,我修改的规则如下
mysql> alter user 'admin'@'%' identified with mysql_native_password by '123456';
其中还有'用户名'@'%'和'用户名'@'localhost'的区别,一个是任意连接,一个是本地连接。
4.刷新权限
mysql> flush privileges;
5.停止并重启服务
service mysqld restart