一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 13 天,点击查看活动详情
日积月累,水滴石穿 😄
前言
云服务器到期了,在自己电脑搞了一个虚拟机,需要重新在 Linux 下配置 Java 环境。本文在此记录一下!
缺失命令:
yum -y install vim*
安装 JDK
官网地址:www.oracle.com/java/techno…
如果下载 jdk-8u321-linux-aarch64.tar.gz这个包,会出现:-bash: /usr/local/java/jdk1.8.0_321/bin/java: 无法执行二进制文件异常
将下载成功的安装包,放到 /opt 目录中。然后对其进行解压。
[root@localhost opt]# tar -zxvf jdk-8u321-linux-x64.tar.gz
创建文件夹,然后进行移动。
[root@localhost opt]# mkdir /usr/local/java
[root@localhost opt]# mv jdk1.8.0_321/ /usr/local/java
[root@localhost opt]# cd /usr/local/java/
[root@localhost java]# ls
jdk1.8.0_321
配置环境变量
- 打开 profile 文件
vim /etc/profile
- 在 profile 文件最下面,添加内容如下,
JAVA_HOME的 jdk 路径根据自己的安装目录来写。
#Java
export JAVA_HOME=/usr/local/java/jdk1.8.0_321
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
注意::$PATH 不能少,不然会找不到所有的命令。
- 更新配置文件重新生效。
source /etc/profile
测试
[root@localhost jdk1.8.0_321]# java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
安装 MySQL
在官网:dev.mysql.com/downloads/m… 中,选择以下版本的 MySQL 下载:
小杰这里下载的是 5.7.37版本,注意,下载的是tar.gz后缀的包。
将下载好的安装包上传到 /opt目录中。对其进行解压,并重命名。(mysql-5.7.37目录不存在)
[root@localhost opt]# tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
[root@localhost opt]# mv mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/java/mysql-5.7.37
[root@localhost opt]# cd /usr/local/java/mysql-5.7.37/
[root@localhost mysql-5.7.37]# ls
bin docs include lib LICENSE man README share support-files
1、删除mariadb
因为 CentOS7 默认安装 mariadb 数据库,MySQL 和它会有冲突,先把它删掉。使用命令:
rpm -qa | grep mariadb 查看当前centos系统中是否已存在mariadb数据库
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 (从上一步查看的mariadb全包名) 删除mariadb数据库以及依赖包
再次执行查询命令,查看是否删除。
rpm -qa | grep mariadb
2、检查用户组和用户是否存在,如果没有,则创建
- -r:建立系统帐号。
- -g:指定用户所属的群组。
[root@localhost mysql-5.7.37]# cat /etc/group | grep mysql
[root@localhost mysql-5.7.37]# cat /etc/passwd |grep mysql
# 创建一个系统用户,不指定用户组时,会自动创建一个与用户同名的组
[root@localhost mysql-5.7.37]# useradd -r mysql
[root@localhost mysql-5.7.37]# id mysql
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)
3、创建数据文件夹data
data文件夹是 MySQL 用来存放数据库文件的,数据库的表数据都放在 data 目录。默认没有data目录,需要手动创建data目录。
[root@localhost mysql-5.7.37]# mkdir data
示例如下:
4、修改 MySQL 安装目录权限
将 mysql-5.7.37目录及子目录的权限给与 mysql 用户,mysql 组。
[root@localhost mysql-5.7.37]# chown -R mysql:mysql /usr/local/java/mysql-5.7.37
[root@localhost mysql-5.7.37]# ll
总用量 276
drwxr-xr-x. 2 mysql mysql 4096 3月 3 19:20 bin
drwxr-xr-x. 5 mysql mysql 4096 3月 3 20:03 data
drwxr-xr-x. 2 mysql mysql 55 3月 3 19:20 docs
drwxr-xr-x. 3 mysql mysql 4096 3月 3 19:20 include
drwxr-xr-x. 5 mysql mysql 230 3月 3 19:20 lib
-rw-r--r--. 1 mysql mysql 259253 11月 30 04:09 LICENSE
drwxr-xr-x. 4 mysql mysql 30 3月 3 19:20 man
-rw-r--r--. 1 mysql mysql 566 11月 30 04:09 README
drwxr-xr-x. 28 mysql mysql 4096 3月 3 19:20 share
drwxr-xr-x. 2 mysql mysql 90 3月 3 19:20 support-files
- -R:处理指定目录以及其子目录下的所有文件
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
5、初始化MySQL
进入到 bin 目录,使用 MySQL 的 mysqld 命令初始化数据库的基本信息。
[root@localhost mysql-5.7.37]# cd bin/
[root@localhost bin]# ls
innochecksum myisampack mysqlcheck mysqld-debug mysql_embedded mysql_secure_installation mysql_tzinfo_to_sql resolveip
lz4_decompress my_print_defaults mysql_client_test_embedded mysqld_multi mysqlimport mysqlshow mysql_upgrade resolve_stack_dump
myisamchk mysql mysql_config mysqld_safe mysql_install_db mysqlslap mysqlxtest zlib_decompress
myisam_ftdump mysqladmin mysql_config_editor mysqldump mysql_plugin mysql_ssl_rsa_setup perror
myisamlog mysqlbinlog mysqld mysqldumpslow mysqlpump mysqltest_embedded replace
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/java/mysql-5.7.37/data --basedir=/usr/local/java/mysql-5.7.37/
- --datadir 为mysql数据存放目录。
- --basedir 为mysql解压目录。
执行完这行命令可能会出现问题:
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
出现该问题首先检查该链接库文件有没有安装使用,使用命令进行核查:
[root@izm5eeq7orgtvuxpgma2f4z bin]# rpm -qa|grep libaio
运行命令后发现系统中没有 libaio,进行安装
yum install libaio-devel.x86_64
安装完成之后,继续使用上面那条命令。
执行此命令后,系统会为 root 用户随机生成一个密码 oOwCk75gyw/C。登录之后可以进行修改。
6、启动mysql
- 方式一
[root@localhost bin]# ./mysqld_safe --user=mysql
出现以下日志说明 mysql 启动成功。
- 方式二:
[root@localhost mysql-5.7.37]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql-5.7.37]# service mysql start
但是这种启动方式可能会出现以下异常:
/etc/init.d/mysql: line 239: my_print_defaults: command not found`
/etc/init.d/mysql: line 259: cd: /usr/local/mysql: No such file or directory Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
解决方式也简单,指明basedir和datadir路径即可。 解决办法:
[root@localhost etc]# vim my.cnf
[mysqld]
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
basedir=/usr/local/java/mysql-5.7.37/
datadir=/usr/local/java/mysql-5.7.37/data
然后重新启动即可。
[root@localhost etc]# service mysql start
Starting MySQL. SUCCESS!
新开一个窗口,查看 Mysql 进程
[root@localhost ~]# ps -ef | grep mysql
7、设置 MySQL 开机自启动
注意:第 6 步 启动 MySQL 时,选择 方式二。
# 赋予可执行权限
[root@localhost ~]# chmod +x /etc/init.d/mysql
# 添加为启动服务
[root@localhost ~]# chkconfig --add mysql
# 查看启动服务列表
[root@localhost ~]# chkconfig --list
mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
如果 3、4、5 状态为开或者为 on 则表示成功。如果是关或者 off 则执行一下:chkconfig --level 345 mysql on。
执行完毕之后,可以重启计算机,命令为:reboot。
重启成功之后,执行 ps -ef | grep mysql,可以看到 mysql 的进程。
使用mysql客户端进入mysql
使用账号密码登录
进入到 bin 目录下执行命令, ./mysql -uroot -p
-u 用户名。 -p 密码,使用上面生成的密码。
成功登录客户端。先来使用命令创建一个数据库验证一下!
mysql> CREATE DATABASE test_db;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
意思是:在执行此语句之前,必须使用ALTER USER语句重置密码。
修改密码
mysql> alter user 'root'@'localhost' identified by '密码';
Query OK, 0 rows affected (0.00 sec)
# 再次进行验证
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+
5 rows in set (0.01 sec)
添加到系统命令
如果不想每次连接 MySQL 时,都要进入到 mysql/bin目录下,可以将 mysql 命令添加到系统命令执行路径中。
[root@localhost /]# mysql -uroot -p
-bash: mysql: 未找到命令
[root@localhost /]# ln -s /usr/local/java/mysql-5.7.37/bin/* /usr/local/bin/
[root@localhost /]# mysql -uroot -p
Enter password:
配置远程连接
如果这时候使用远程连接,你会发现无法连接。会出现以下异常:
在没有授权之前只能在本机访问mysql,远程授权就是让其他计算机通过网络访问 MySQL。
- 方式1: 更改
mysql数据库user表host字段值,从localhost改成%。
mysql> use mysql;
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql> update user set host = '%' where user ='root';
mysql> flush privileges; 刷新
- 方式2: 直接授权
mysql> grant all privileges on *.* to root@'%' identified by '密码'
mysql> flush privileges; 刷新
%也可以指定具体的ip的地址,比如 grant all privileges on . to root@47.105.198.54 identified by '密码'。其中第一个 * 表示所有数据库名,第二个 * 表示的数据库表。 root@'%'中的root表示用户名,%表示ip地址。
如果上述操作进行了还是不行,则检查防火墙是否关闭!
检查防火墙
可以通过systemctl status firewalld命令查看防火墙状态!
[root@localhost ~]# systemctl status firewalld
防火墙一般默认都是开启的。如果防火墙是开启的,那就要进行端口检测,如果端口是关闭的,则要放开。
如果不想开放端口,直接将防火墙关闭就行。
[root@localhost ~]# systemctl stop firewalld
关闭防火墙之后,再次使用远程工具连接。
开放端口
查看 3306 端口是否开放!注:查看端口需要先打开防火墙。
[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# firewall-cmd --query-port=3306/tcp
no
开放端口:
[root@localhost ~]# firewall-cmd --add-port=3306/tcp --permanent
success
- --permanent:永久生效,没有此参数服务器重启后失效。 重启防火墙:
[root@localhost ~]# systemctl restart firewalld
开放端口之后,再次使用远程工具连接。
- 如你对本文有疑问或本文有错误之处,欢迎评论留言指出。如觉得本文对你有所帮助,欢迎点赞和关注。