登陆mysql数据库

本文介绍了如何修改MySQL的user表以允许远程访问。通过更新host字段为%,并使用GRANT ALL PRIVILEGES命令赋予root用户所有权限,可以实现远程连接。在MySQL8版本中,由于语法变化,需分两步创建用户并授予权限。此外,还提供了更改host字段的直接方法以实现远程访问。
  mysql -u root -p

查看user表

mysql> use mysql;
mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host         | user | password                                  |
+--------------+------+-------------------------------------------+
| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)

可以看到在user表中已创建的root用户。host字段表示登录的主机,其值可以用IP,也可用主机名,

(1)有时想用本地IP登录,那么可以将以上的Host值改为自己的Ip即可。

2、实现远程连接(授权法)

将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。

   update user set host =%where user = ’root’;

将权限改为ALL PRIVILEGES

mysql> use mysql;
Database changed
mysql> grant all privileges  on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host         | user | password                                  |
+--------------+------+-------------------------------------------+
| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| %            | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;

时提示如下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY ‘Tibco123’WITH GRANT OPTION’ at line 1、

意识到版本问题后就百度mysql-8授权语句的语法,终于解决问题。

在Mysql 8版本中,不能使用

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY 'password’WITH GRANT OPTION;
这一行命令来设置用户权限,必须分两步来实现设置用户权限【先创建用户、在对该用户分配用户权限】,最后刷新权限

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

这样机器就可以以用户名root密码root远程访问该机器上的MySql.

3、实现远程连接(改表法)

use mysql;

update user set host = ‘%’ where user = ‘root’;

这样在远端就可以通过root用户访问Mysql.

### JSP实现连接和登录MySQL数据库的方法 以下是一个完整的解决方案,涵盖了从配置到实现的具体步骤。 #### 数据库驱动程序的配置 确保已将`mysql-connector-java.jar`文件添加到项目的类路径中[^2]。如果使用的是Apache Tomcat服务器,可以将该JAR文件放置在Tomcat的`lib`目录下。 #### 数据库表结构示例 假设存在一个名为`users`的表,用于存储用户信息,其结构如下: ```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(50) NOT NULL ); ``` #### 实现代码示例 以下是一个使用JSP页面实现登录功能的示例代码: ```jsp <%@ page import="java.sql.*" %> <% String username = request.getParameter("username"); // 获取用户名参数 String password = request.getParameter("password"); // 获取密码参数 Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver").newInstance(); // 加载MySQL驱动程序[^1] String url = "jdbc:mysql://localhost:3306/your_database_name?user=your_username&password=your_password&useUnicode=true&characterEncoding=UTF-8"; conn = DriverManager.getConnection(url); // 建立数据库连接[^1] String sql = "SELECT * FROM users WHERE username = ? AND password = ?"; pstmt = conn.prepareStatement(sql); // 创建PreparedStatement对象以防止SQL注入[^3] pstmt.setString(1, username); pstmt.setString(2, password); rs = pstmt.executeQuery(); // 执行查询操作 if (rs.next()) { session.setAttribute("userName", username); // 设置会话属性 response.sendRedirect("login_success.jsp"); // 跳转到登录成功页面 } else { out.println("用户名或密码错误!"); } } catch (Exception e) { out.println("数据库连接失败:" + e.getMessage()); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { out.println("关闭数据库连接时发生错误:" + e.getMessage()); } } %> ``` #### 登录成功页面示例 当用户登录成功后,可以跳转到以下页面: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>登录成功</title> </head> <body> 欢迎, <%=session.getAttribute("userName")%> <a href="login.jsp">返回</a> </body> </html> ``` #### 注意事项 - 确保替换`your_database_name`、`your_username`和`your_password`为实际的数据库名称、用户名和密码。 - 使用PreparedStatement可以有效防止SQL注入攻击。 - 在实际应用中,建议对密码进行加密处理,避免明文存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值