MySQL数据库的root用户设置成允许远程登录
以root用户身份登录到MySql数据库,操作步骤如下:
//连接mysql数据库
mysql> use mysql
Database changed
//设置访问权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
//其中"*.*"代表所有资源所有权限, "'root'@'%'"其中root代表账户名,%代表所有的访问地址,IDENTIFIED BY '密码',这里换成数据库root用户的密码,WITH GRANT OPTION表示允许级联授权。
//刷新访问权限表
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.05 sec)
//如果查询结果出现增加一行表示添加权限成功
mysql> SELECT User,Host FROM user;
+---------------+-----------+
| User | Host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)
MySQL数据库存储IPv4是选择无符号整型还是字符串
MySQL数据使用字符串存储IP地址
在保存IPv4地址时,一个IPv4最小需要7个字符,最大需要15个字符,所以使用VARCHAR(15)保存变长的字符串
MySQL数据库使用无符号整数存储IP地址
在保存IPv4地址时,一个IPv4使用4个字节的无符号整数来存储
MySQL数据库本身提供了相应的函数来支持字符串IPv4和数值类型的相互转换
使用INET_ATON函数将字符串格式的IP转换成整数
mysql> select inet_aton('192.168.0.1');
+--------------------------+
| inet_aton('192.168.0.1') |
+--------------------------+
| 3232235521 |
+--------------------------+
1 row in set (0.00 sec)
使用INET_NTOA将整数格式的IP转换成字符串
mysql> select inet_ntoa(3232235521);
+-----------------------+
| inet_ntoa(3232235521) |
+-----------------------+
| 192.168.0.1 |
+-----------------------+
1 row in set (0.00 sec)
编写C#代码实现字符串IPv4和数值类型的相互转换
public class IpUintUtils
{
/// <summary>
/// 把字符串IP转换成uint
/// </summary>
/// <param name="ipStr"></param>
/// <returns></returns>
public static long ip2uint(String ipStr)
{
char[] chars = { '.', ' ' };
String[] ip = ipStr.Split(chars);
return (uint.Parse(ip[0]) << 24) + (uint.Parse(ip[1]) << 16)
+ (uint.Parse(ip[2]) << 8) + uint.Parse(ip[3]);
}
/// <summary>
/// 把uint转换成字符串IP
/// </summary>
/// <param name="ipUint"></param>
/// <returns></returns>
public static String uint2Ip(uint ipUint)
{
StringBuilder ip = new StringBuilder();
ip.Append(ipUint >> 24).Append(".");
ip.Append((ipUint >> 16) & 0xFF).Append(".");
ip.Append((ipUint >> 8) & 0xFF).Append(".");
ip.Append(ipUint & 0xFF);
return ip.ToString();
}
}