update user set plugin="mysql_native_password" where user='root';
auth_socket 验证插件的使用场景
问题解决后 , 又仔细研究了一下 auth_socket 这个插件,发现这种验证方式有以下特点:
首先 , 这种验证方式不要求输入密码,即使输入了密码也不验证 。这个特点让很多人觉得很不安全,实际仔细研究一下这种方式,发现还是相当安全的,因为它有另外两个限制;
只能用 UNIX 的 socket 方式登陆 , 这就保证了只能本地登陆,用户在使用这种登陆方式时已经通过了操作系统的安全验证;
操作系统的用户和 MySQL 数据库的用户名必须一致,例如你要登陆 MySQL 的 root 用户,必须用操作系统的 root 用户登陆 。
auth_socket 这个插件因为有这些特点,它很适合我们在系统投产前进行安装调试的时候使用,而且也有相当的安全性,因为系统投产前通常经常同时使用操作系统的 root 用户和 MySQL 的 root 用户 。当我们在系统投产后,操作系统的 root 用户和 MySQL 的 root 用户就不能随便使用了,这时可以换成其它的验证方式,可以使用下面的命令进行切换:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
java链接mysql数据库实现登陆如何验证?//这是我以前写怎么验证后台mysql的核对数据库实现登陆的方法,你只看jdbc部分就好,我还特地给你加怎么验证后台mysql了点注释\x0d\x0aString sql = "select username,password from account";\x0d\x0aString user = request.getParameter("user");\x0d\x0aString pass = request.getParameter("password");\x0d\x0aint j = 0;\x0d\x0aConnection conn = null;\x0d\x0aPreparedStatement ps = null;\x0d\x0aResultSet rs = null;\x0d\x0atry {\x0d\x0aconn = JDBCTools1.getConnection();\x0d\x0aps = conn.prepareStatement(sql);\x0d\x0ars = ps.executeQuery();\x0d\x0a//从表中查询获取所有账户的用户名密码的ResultSet 对象\x0d\x0awhile(rs.next()){\x0d\x0aint i = 0;\x0d\x0a\x0d\x0aString username[] = new String[10];//用户名数组\x0d\x0aString password[] = new String[10];//密码数组\x0d\x0ausername[i] = rs.getString(1);\x0d\x0apassword[i] = rs.getString(2);\x0d\x0aif(user.equals(username[i])pass.equals(password[i])){//比对\x0d\x0aresponse.getWriter().print("you are welcome!");\x0d\x0aj++;\x0d\x0a}else if(user.equals(username[i])!pass.equals(password[i])){\x0d\x0aresponse.getWriter().println("the realy password is :"+ username[i] +","+password[i]+"\r\n");\x0d\x0aresponse.getWriter().println("and you password is:"+user +","+pass+" :so the username or password may not right");\x0d\x0aj++;\x0d\x0a}else{\x0d\x0acontinue;\x0d\x0a}\x0d\x0ai++;\x0d\x0a}\x0d\x0aif(j == 0){\x0d\x0aresponse.getWriter().println("Your username may not be properly");\x0d\x0a}\x0d\x0a} catch (Exception e) {\x0d\x0ae.printStackTrace();\x0d\x0a}finally{\x0d\x0aJDBCTools1.release(rs, ps, conn);\x0d\x0a}\x0d\x0a//这是我JDBCTools的getConnection方法\x0d\x0agetConnection{\x0d\x0aString driverClass = oracle.jdbc.driver.OracleDriver;\x0d\x0aString jdbcUrl = jdbc:oracle:thin:@localhost:1521:orcl;\x0d\x0a//你的数据库的用户名密码\x0d\x0aString user = null;\x0d\x0aString password = null;\x0d\x0a// 通过反射创建Driver对象\x0d\x0aClass.forName(driverClass);\x0d\x0areturn DriverManager.getConnection(jdbcUrl, user, password);}\x0d\x0a//这是我JDBCTools的release方法\x0d\x0apublic static void release(ResultSet rs, Statement statement,\x0d\x0aConnection conn) {\x0d\x0aif (rs != null) {\x0d\x0atry {\x0d\x0ars.close();\x0d\x0a} catch (SQLException e) {\x0d\x0ae.printStackTrace();\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aif (statement != null) {\x0d\x0atry {\x0d\x0astatement.close();\x0d\x0a} catch (Exception e2) {\x0d\x0ae2.printStackTrace();\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aif (conn != null) {\x0d\x0atry {\x0d\x0aconn.close();\x0d\x0a} catch (Exception e2) {\x0d\x0ae2.printStackTrace();\x0d\x0a}\x0d\x0a}\x0d\x0a}
推荐阅读
- 直播平台对接,对接主播的平台
- sqlserver批量执行sql脚本,sql语句批量执行
- 电脑自动重启打印机怎么办,电脑重启打印机自动打印
- linux解压和打包命令,linux 解压压缩包命令
- 解谜游戏数学,数学谜题游戏
- 快手直播晚秋,快手今晚直播
- 包含php同时插入两条数据的词条
- linux本地地址命令行,linux本地yum
- dell服务器备份,dell服务器备份系统