启动azkaban时报错:
2020/11/08 23:03:46.126 +0800 ERROR [MySQLDataSource] [main] [Azkaban] Failed to find write-enabled DB connection. Wait 15 seconds and retry. No.Attempt = 11
java.sql.SQLException: Cannot create PoolableConnectionFactory (Could not create connection to database server.)
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
at azkaban.db.MySQLDataSource.getConnection(MySQLDataSource.java:78)
at org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:175)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:286)
at azkaban.db.DatabaseOperator.query(DatabaseOperator.java:69)
at azkaban.executor.ExecutorDao.fetchExecutor(ExecutorDao.java:63)
at azkaban.executor.JdbcExecutorLoader.fetchExecutor(JdbcExecutorLoader.java:291)
at azkaban.execapp.AzkabanExecutorServer.initActive(AzkabanExecutorServer.java:278)
at azkaban.execapp.AzkabanExecutorServer.start(AzkabanExecutorServer.java:247)
at azkaban.execapp.AzkabanExecutorServer.launch(AzkabanExecutorServer.java:163)
at azkaban.execapp.AzkabanExecutorServer.main(AzkabanExecutorServer.java:159)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2575)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2311)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347)
at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
... 11 more
Caused by: java.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3286)
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1987)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1913)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1290)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2493)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2526)
... 25 more
可能的原因:
- mysql在不同的主机访问权限。解决方案:
MySql中user表中主机配置 配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
1)进入mysql [root@hadoop102 mysql-libs]# mysql -uroot -p000000
2)显示数据库 mysql>show databases;
3)使用mysql数据库 mysql>use mysql;
4)展示mysql数据库中的所有表 mysql>show tables;
5)展示user表的结构 mysql>desc user;
6)查询user表 mysql>select User, Host, Password from user;
7)修改user表,把Host表内容修改为% mysql>update user set host=’%’ where host=‘localhost’;
8)删除root用户的其他host mysql>delete from user where Host=‘hadoop102 ‘; mysql>delete from user where Host=‘127.0.0.1’; mysql>delete from user where Host=’::1’;
9)刷新 mysql>flush privileges;
10)退出 mysql> quit;
2.查看azkaban-exec-server-0.1.0-SNAPSHOT/lib目录下mysql连接驱动包版本,是否与mysql匹配。不匹配修改之。