Java-10-Linux服务器部署Mysql
Posted 平遥互联网
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-10-Linux服务器部署Mysql相关的知识,希望对你有一定的参考价值。
近来北京疫情虽有好转,但是我却很悲催的感冒发烧了,你可说吧。吓人不吓人,反反复复的低烧,今天刚去医院做了个检查,坐等结果撒。。。
我接到的任务是将我近来开发的一个项目部署到公司的虚拟服务器上,其实在我连上数据库输入:cat /proc/version 查看系统内核和系统信息时,发现是RedHat,卧槽!惊不惊喜意不意外。。。哈哈、
我要安装一个mysql数据库!在此记录下我的操作,及遇到的很多坑。
开始!
一般来说,Linux我都是用yum或者是直接tar解压源码包这两种方法来安装软件包啥的,但是我在用这个tar源码包的方法直接安装完成以后,发现出现了很多的问题哈。
比如
error while loading shared libraries: /lib64/libgpm.so.1
openssl: error while loading shared libraries: libssl.so.1.1
就很多依赖它都没有找到,ok,解决:
1.我去下载了依赖,确认目录下已经存在了这个文件,但是不行。
2.我又去查,说是要创建软连接:
ln -s /usr/local/bin/openssl /usr/bin/openssl
#查看
ll /usr/lib64/libssl.so*
根据网上的教程很多很多方法都无从解决,所以我决定换种方式安装,我使用了rpm包安装的方式:
第一步:下载
rpm -qa | grep mysql # 检测系统是否自带安装 MySQL
yum list installed mysql*
find / -name mysql
以上三种都可以查看本地是否有mysql相关的软件包信息
如果有的话,需要卸载干净,我因为各种测试解决问题,就需要删除下:
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
第二步:安装
准备好我们下载好的Yum 资源包。
这里如果有wget命令是可以直接从url获取的,注意要选取你需要的版本:
wget https://dev.mysql.com/downloads/repo/yum/mysql-community-release-el7-5.noarch.rpm
我是直接本地下载好,上传到服务器的,所以我就直接到我上传的那个目录,运行:
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
然后设置权限:
chown mysql:mysql -R /var/lib/mysql
第三步:初始化mysql
mysqld --initialize
到这一步就要注意一下,我安装的是8.0,安装好后,初次登陆时用root用户,密码默认是不是空的,而是在日志里输出了一个随机密钥,可以到/var/log/mysqld.log文件获取:
# 可以这么查
grep 'temporary password' /var/log/mysqld.log
# 也可以打开去查
cat /var/log/mysqld.log
第四步:启动mysql服务
systemctl start mysqld # 启动
systemctl restart mysqld # 重启
systemctl stop mysqld # 停止
systemctl status mysqld # 查看状态
到此,mysql安装就完成了。
第五步:验证与登陆mysql
验证下安装的结果:
# 使用 mysqladmin 命令来检查服务器的版本,。
# 在 linux 上该二进制文件位于 /usr/bin 目录。
# 在 Windows 上该二进制文件位于C:\mysql\bin
mysqladmin --version
如果以上命令执行后未输出任何信息,说明你的Mysql未安装成功,成功的话就会基于你的系统提示出一条消息。
我们可以使用mysql的client来登陆mysql。命令行直接输入mysql即可进入,执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,并且可以开始执行sql语句。
在这里,我遇到了一个问题:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这个错误,因为在第三步初始化的时候,测试过程中我把log给删了,方便查看嘛,结果就没记下那个密钥,相当于也就是只知道root用户,不知道密码,就是说如果你是忘记密码了也可以这么解决:
打开mysql的配置my.cnf文件,搜索mysqld关键字
输入:skip-grant-tables
重启服务,这样就可以跳过密码验证。
我还顺带着看了下user表里有些啥,有兴趣可以去看看:
select user,host,authentication_string
from user
where user='root'
;
# 这句是8.0以前的,8.0后,password函数被干掉了。。。
update mysql.user set authentication_string=password('root') where user='root' and host='127.0.0.1' or host='localhost';
# 没招,查了半天发现这个函数没了,我就把她密码搞成了空的,然后去修改
update mysql.user set authentication_string='' where user='root';
# 解决方法在这
mysql -u root -p # 密码是空的,就直接回车了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';# 修改密码
flush privileges;# 刷新
exit;# 搞定退出
搞到这,发现在服务端是没问题了,但是远程连接连不上滴,再次查看了下发现user表的root用户权限是 127.0.0.1 ,这其实是为了安全哈,应该再次搞个用户,不过我还是喜欢用root,于是执行下列语句就ok了。
update user set host='%' where user='root';# 更改root的登陆主机限制
第六步:番外
如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。
甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用MariaDB分支的方式来避开这个风险,所以直接用MariaDB也是可以的,完全兼容mysql,相关的命令:
yum install mariadb-server mariadb
systemctl start mariadb # 启动MariaDB
systemctl stop mariadb # 停止MariaDB
systemctl restart mariadb # 重启MariaDB
systemctl enable mariadb # 设置开机启动
我测试了下,我安装他的时候,直接就提示说 mysql已经替换掉了MariaDB,所以不需要在安装了,所以应该还是mysql的优先级高,既然已经安装了mysql,就不需要MariaDB了,就是个这意思。
END
以上是关于Java-10-Linux服务器部署Mysql的主要内容,如果未能解决你的问题,请参考以下文章
将React + NodeJS + Express + MySQL应用程序部署到Heroku仅部署服务器而不是React