本文目录一览:
- 1、怎么用mysql工具连接数据库
- 2、如何允许外网可以连接mysql数据库
- 3、如何把mysql设置成网络数据库,即远程访问mysql
- 4、怎么用mysql处理这样的问题?
- 5、连接mysql是异步的吗
- 6、ajax怎么异步读取mysql数据库的字段内容?
怎么用mysql工具连接数据库
可以使用mysql推出的mysqlconnector/net组件,该组件是mysql为ado.net访问mysql数据库设计的.net专用访问组件,完成该组件后,需要在项目中引用这个组件,之后在程序中引用命名空间mysql.data.mysqlclient,即可开始进行连接mysql数据库的操作了,示例如下:
protected
voidmysqlcon()
{
//数据库连接字符串跟连接sqlserver没有区别
string
constr
=
"server=localhost;userid=root;password=root;database=test";
//下面使用mysql
connector/net提供的专用对象
mysqlconnection
mycon
=
new
mysqlconnection(constr);
mycon.open();
mysqlcommandmycmd
=
new
mysqlcommand("select
*
from
users",
mycon);
mysqldatareader
myreader
=
mycmd.executereader();
while
(myreader.read())
{
if
(myreader.hasrows)
{
messagebox.show(myreader.getstring("email")
);
}
}
myreader.close();
mycon.close();
如何允许外网可以连接mysql数据库
设置mysql服务允许外网访问,修改mysql的配置文件,有的是my.ini,有的是my.cnf【linux】.
1:设置mysql的配置文件
/etc/mysql/my.cnf
找到 bind-address =127.0.0.1 将其注释掉;//作用是使得不再只允许本地访问;
重启mysql:/etc/init.d/mysql restart;
2:登录mysql数据库:mysql -u root -p
mysql use mysql;
查询host值:
mysql select user,host from user;
如果没有"%"这个host值,就执行下面这两句:
mysql update user set host='%' where user='root';
mysql flush privileges;
或者也可以执行:
mysqlgrand all privileges on *.* to root@'%' identifies by ' xxxx';
其中 第一个*表示数据库名;第二个*表示该数据库的表名;如果像上面那样 *.*的话表示所有到数据库下到所有表都允许访问;
‘%':表示允许访问到mysql的ip地址;当然你也可以配置为具体到ip名称;%表示所有ip均可以访问;
后面到‘xxxx'为root 用户的password;
举例:
任意主机以用户root和密码mypwd连接到mysql服务器
mysql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql flush privileges;
IP为192.168.1.102的主机以用户myuser和密码mypwd连接到mysql服务器
mysql GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql flush privileges;
如何把mysql设置成网络数据库,即远程访问mysql
第一种方法:直接输入账户名和密码进入数据库。找到mysql数据库的user表,直接update root用户的Host,将Host:localhost, user:root改成Host:%, user:root
然后 mysql flush privileges; (运行此句才生效,或者重启MySQL)。因为mysql的权限都在cache里,所以要刷新一下。
改成%后,任意IP都可访问mysql服务器,十分不安全。可以将%将换成一个IP地址,即只允许来自该IP地址的访问。
第二种方法:直接输入账户名和密码进入数据库。
mysqlGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
mysql flush privileges;
可以将%将换成一个IP地址,即只允许来自该IP地址的访问。
root用户权限过大,建议新建用户,赋予其对某个数据库的部分权限
怎么用mysql处理这样的问题?
通常情况下在PHP中MySQL查询是串行的,如果能实现MySQL查询的异步化,就能实现多条SQL语句同时执行,这样就能大大地缩短MySQL查询的耗时,提高数据库查询的效率。目前MySQL的异步查询只在MySQLi扩展提供,查询方法分别是:
1、使用MYSQLI_ASYNC模式执行mysqli::query
2、获取异步查询结果:mysqli::reap_async_query
使用mysql异步查询,需要使用mysqlnd作为PHP的MySQL数据库驱动。
使用MySQL异步查询,因为需要给所有查询都创建一个新的连接,而MySQL服务端会为每个连接创建一个单独的线程进行处理,如果创建的线程过多,则会造成线程切换引起系统负载过高。Swoole中的异步MySQL其原理是通过MYSQLI_ASYNC模式查询,然后获取mysql连接的socket,加入到epoll事件循环中,当数据库返回结果时会回调指定函数,这个过程是完全异步非阻塞的。
连接mysql是异步的吗
idle_pool是空闲的数据库连接,当有SQL请求时从idle_pool中移到busy_pool中。
当数 据库返回结果后从busy_pool中再移到idle_pool中,以供新的请求使用。
当SQL请求到达时如果没有空闲的数据库连接,那会自动加入到 wait_queue中。
一旦有SQL完成操作,将自动从wait_queue中取出等待的请求进行处理。
ajax怎么异步读取mysql数据库的字段内容?
jQuery.ajax({
url: '%=basePath%XXXXX.action', // 提交的页面
data: {msg_id:+id}, // 有要传递的数据就传递,没有就空着
type: "POST",//传递方式
success: function(data) {
//action返回结果,页面显示
}
});