Ubuntu系统下载并安装MySQL并在Spark环境下使用jdbc连接MySQL数据库总结

操作系统:虚拟机中搭建的Ubuntu18.04

Spark版本:spark-2.3.0-bin-hadoop2.7

MySQL版本:

JDBC驱动压缩包:mysql-connector-java-8.0.16.jar

安装并使用MySQL的前提:已经安装好了Spark并且能正常运行。

MySQL的下载安装及配置:

1、MySQL的下载安装

Ubuntu系统中安装MySQL相当容易,只需要执行以下命令:

(1)更新apt-get命令:

sudo apt-get updata

(2)安装MySQL:

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

 (3)安装MySQL的可视化图形界面(mysql workbench):可选,不安装也不影响使用

sudo apt-get install mysql-workbench

 (4)配置MySQL:

执行命令:

sudo mysql_secure_installation

 会进入MySQL的配置页面,在这里会设置root账户的密码等等,一共有6项配置,如下:

#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (我的选项)

#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)

#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (我的选项)

#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y (我的选项)

#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (我的选项)

#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (我的选项)

 配置结束后可以执行下面的命令进行检查:

systemctl status mysql.service

结果如下午所示即配置成功: 

 

至此,MySQL的安装、配置就全部搞定了,好奇的小伙伴可以用命令行来操作一下刚刚装好的MySQL了!

PS:

启动MySQL数据库服务的命令:

service mysql start

进入MySQL的命令:

(1)进入root用户:

sudo mysql -u root -p

(2)进入普通用户:

mysql -u 用户名 -p

退出MySQL的命令:键入exit或者quit都可以,它会跟你Bye的。

停止MySQL数据库服务的命令:

service mysql stop

OK,接下来搞JDBC。 

JDBC驱动包的下载及配置:

(1)JDBC的下载

jar包下载地址:https://dev.mysql.com/downloads/connector/j/

 选择“Platform Independent”后会出现两个可以下载的压缩文件,随意选择其中一个下载即可。

(2)JDBC的配置:

下载后将其解压至spark安装目录下的jars文件夹中。

再将指定的数据库的JDBC驱动(我的是:mysql-connector-java-8.0.16.jar)包含在Spark的环境变量中,即:

在终端执行

spark-shell --jars /usr/local/spark-2.3.0-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar --driver-class-path /usr/local/spark-2.3.0-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar
		

使用JDBC连接MySQL数据库的步骤:

这里举一段代码为例:

//创建Properties类对象需要的包
scala> import java.util.Properties
import java.util.Properties
scala> val jdbcDF = spark.read
//识别读取的是JDBC数据源。
.format("jdbc") 
//要连接的JDBC URL属性,其中student是创建的数据库名。
.option("url","jdbc:mysql://localhost:3306/student")
// driver部分是Spark SQL访问数据库的具体驱动类名。
.option("driver","com.mysql.cj.jdbc.Driver")
//dbtable部分是需要访问的student库中的表stu。
.option("dbtable","stu")
//user部分是用于访问mysql数据库的用户
.option("user","root")
//password部分是该用户访问数据库的密码
.option("password","mysql")
.load()
scala> jdbcDF.show()
+---+-------+----------+----------+---------+                                                
| id|name|country| Height|Weight|
+---+-------+----------+----------+---------+
| 1|  MI|  china|  180.0|  60.0|
| 2|  UI |    UK|  160.0|  50.0|
| 3|  DI |    UK|  165.0|  55.0|
| 4|  Bo|  china|  167.0|  45.0|
+---+-------+----------+----------+---------+      

问题总结:

1、连接数据库时,驱动类名网上很多写的都是"com.mysql.jdbc.Driver",但其实这个驱动类名现在已经更新了,输入这个驱动类名会报错,应该写为"com.mysql.cj.jdbc.Driver"。

2、安装好MySQL和JDBC后,在Spark中连接数据库时出现了问题,显示:Access denied for user 'root'@'localhost'

解决办法:

首先声明网上有很多解决这个问题的帖子、博客等等等等,但能尝试的我都尝试了一下,对我都不管用,但这里还是略微总结一下吧,毕竟踩了一天的坑: 

(1)可能是账号密码没有输入正确。

(2)若账号密码都正确,可以回到MySQL数据库中,执行权限相关的操作:

GRANT ALL PRIVILEGES ON ComicFM.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

更改完权限后,执行:

FLUSH PRIVILEGES;

 上面这些都没能解决我的问题,最后我选择了重新建立一个MySQL的账户并为其分配相应的权限。

再次尝试连接时就成功了,截屏留念:

附上两个有用的链接:

MySQL查看并修改端口号:https://www.cnblogs.com/tianlangshu/p/5665290.html

 命令行下创建MySQL数据库与创建用户以及授权:https://blog.csdn.net/sunzhenhua0608/article/details/80382960

参考博客:

《Ubuntu18.04 安装MySQL》:https://blog.csdn.net/weixx3/article/details/80782479

《Ubuntu安装mysql和简单操作》:https://www.cnblogs.com/zhuyp1015/p/3561470.html

《Ubuntu mysql安装,还有可视化界面》:https://www.cnblogs.com/sevenun/p/5565291.html

《pyspark 使用jdbc 连接mysql 数据库报错 Access denied for user 'root'@'localhost'》:https://www.cnblogs.com/Ray-Lei/p/9989664.html

《java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)错误原因》:https://blog.csdn.net/zhoudahuifbi/article/details/79871893

 


emmmmmm,最近重新在虚拟机里面装了一遍MySQL,到最后一步的时候碰到了新错误,记录如下:

连接数据库的时候报错:java.lang.NullPointerException

狗血原因如下:(我还来回看了两遍,都没有发现这个破错误)

忘记在箭头指示的地方加冒号(:)了,再见.jpg 

为了防止以后再出现这种错误,干脆把这段代码记下来,省的以后再出别的问题:

val jdbcDF = spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/student").option("driver","com.mysql.cj.jdbc.Driver").option("dbtable","stu").option("user","bhw-mysql").option("password","123456").load()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值