目前大多数公司搭建环境都是使用docker实现容器化部署,但是有时会遇到linux服务器不能上网的场景,比如政府,事业单位的服务器,为了安全是不链接网络的。所以系统搭建都是离线进行的。
本博文就是描述了linux离线安装mysql8.0的过程。
包下载地址:
1.解压mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz到/usr/local/mysql
tar -zxvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
cp mysql-8.0.18-linux-glibc2.12-x86_64 /usr/local/mysql -r
2.添加系统的mysql组和mysql用户
groupadd mysql
useradd -r -g mysql mysql
这个时候可能会报一个错误,百度查是缺少什么依赖包,是个很奇怪的错误,我记不得了,但是不是报 groupadd: unable to open group file 这种很好解决的错误。其实不用管,你再执行一次会提示 mysql 组已经存在,所以这个错误不用管了。
到mysql目录下:
cd /usr/local/mysql
修改文件权限:
chown -R mysql:mysql ./
这一步很重要如果没有操作后续会报错,下面再做说明。
3./usr/local/mysql路径创建data文件夹
mkdir data
4.初始化数据库
bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data
会自动生成随机密码,记下等下登陆要用
5.修改当前目录mysql的用户权限为root,data文件夹为mysql
chown -R root:root ./
chown -R mysql:mysql data
6.创建配置文件
查看etc/my.cnf 是否有文件my.cnf
如果没有则执行一下操作:
查看有没有 support-files/my-default.cnf这个文件,有的话直接复制到/etc/my.cnf
cp support-files/my-default.cnf /etc/my.cnf
如果没有my-default.cnf这个文件,可以用 touch my-default.cnf 命令创建一个,并配置权限,再复制
chmod 777 ./my-default.cnf
# cd support-files/
# touch my-default.cnf
# chmod 777 ./my-default.cnf
# cd ../
# cp support-files/my-default.cnf /etc/my.cnf
7.配置配置文件
vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意:socket路径要配置正确,之前配置的路径是 /usr/local/mysql/tmp/mysql.sock,是错误的,不用自己建立tmp文件夹。其他的对应创建文件就可以了。
8.开机自启
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
9.注册服务
chkconfig –add mysql
10.查看是否添加成功
chkconfig –list mysql
11.etc/ld.so.conf要配置一个路径,不然报错
vim /etc/ld.so.conf
添加如下内容:
/usr/local/mysql/lib
这个也可以不用加,我安装的时候没有配置这个,也没出问题。
12.配置环境变量/etc/profile
vi /etc/profile
末尾添加如下内容:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
生效参数 :
source /etc/profile
13.启动服务
service mysql start
可能会报这个类似的错误:
当时查看了很多博客,比如:https://blog.csdn.net/zxlhaoren/article/details/88022523 都没有解决我的问题。
后来发现是mysql下的data文件夹权限被设置成了root,所以一直报这个错误,上面的代码图片有说明。
重新执行:
chown -R mysql.mysql /usr/local/mysql/data
再启动服务:
service mysql start
启动成功!
14.登录并修改密码
mysql -uroot -p cCS<-H=Yu0Os
后面是系统生成的密码
15.修改密码
第一次使用随机密码登陆之后,不能操作数据库,会提示
修改密码:
alter user 'root'@'localhost' identified by '123456';
用新密码登陆mysql:
mysql -uroot -p 123456
这个账号只能localhost访问。
mysql8.0之后添加访问权限用户时要先创建用户,如果希望用户在任意ip都可以访问数据库,就可以先创建这个类型的用户:
mysql> create user 'root'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec
再授权:
GRANT ALL PRIVILEGES ON *.* TO
'root'
@
'%'
WITH GRANT OPTION;
flush privileges;
16.新root账号在任意ip访问数据库
当然如果linux在内网就只能内网访问了
17.navicat链接mysql
初次用 Navicat 连接本地的mysql是会报错:2059 - Authentication plugin 'caching_sha2_password' cannot be loaded:
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
解决办法:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
本文安装过程参考博客,非常感谢博主的技术分享:
https://blog.csdn.net/weixin_42109071/article/details/89375748