㈠ mysql如何远程连接服务器
Mysql提供了一套C API函数,可以直接操纵数据库(功能还是很强大的). 用VC开发一个客户端程序,需要连接一个远程的数据库.
第一步:建立一个MYSQL"对象 ",然后对其初始化(文档中要求的);
第二步:使用mysql_real_connect函数连接,不建议使用mysql_connect (这是一个较早的版本);
注意:通过TCP/IP方式连接,所以HOST一项填服务器的IP地址,例如: 166.111.***.***
其次,提供登陆名(USER)和密码(PWD),以及默认连接的数据库名称.
当Mysql建构在一台linux服务器上,自然存在linux本身的密码校验.
我不知道有什么好的方法,只是试着将数据库的username和pwd设置的和linux的一致,然后求通过了
㈡ mysql连接不上服务器怎么办
排除网络或防火墙问题
先看是否能ping通远程服务器,ping 192.168.1.211,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了,telnet 192.168.1.211 3306,如果连接失败,配置防火墙。
配置防火墙,开启3306端口
2.检查MySQL配置
如果开启了防火墙,telnet还是失败,通过netstat查看3306的端口状态:
netstat -apn|grep 3306tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld注意地方,这说明3306被绑定到了本地。检查一下my.cnf的配置,这里可以配置绑定ip地址。
bind-address=addr
不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。
ps:我开启3306端口,并且检查MySQL配置之后,telent仍然失败,但是在本机telnet是ok的,再三确认了配置没有问题。后来跟我们的ucloud账号管理员提了一下,才知道ucloud管理后台也需要开启3306端口,用云服务器的留意这个。
3.检查用户访问权限
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
最后,别忘了重启mysql使配置生效。
以上几个原因,你看一下是否适用你的情况
㈢ MySQL localhost无法连接数据库怎么办
一台服务器的php程序通过localhost地址无法连接数据库的原因是socket没有正确设置。 连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库。 解决方法: 1、看本机MySQL的socket套接字文件在哪里,查看命令是: mysqld --verbose --help | grep socket 输出结果显示套接字文件的位置,比如:这台服务器显示的是 socket /var/run/mysqld/mysqld.sock 2、修改php的配置文件php.ini与之对应关系: 找到:mysql.default_socket这个key 把值设置为:mysql.default_socket = /var/run/mysqld/mysqld.sock 3、启一下fastcgi进程,再次用localhost就可以正常连接了。
㈣ 如何命令行连接mysql数据库
使用命令行连接MySQL数据库:
Windows操作系统下,开始——运行,打开"运行"对话框,输入cmd,点击“确定”即可进入DOS窗口。
DOS窗口输入登录MySQL数据库命令
mysql -h 127.0.0.1 -u root -p
命令参数说明:
mysql是登录数据库的命令,-h 后面跟服务器的IP,由于本示例MySql服务器安装在本地,因此IP地址为127.0.0.1;-u 后面跟用户名,本示例采用 root用户登录;-p 后面跟登录密码。
输入上述命令后回车,再输入登录密码,在回车即可完成登录MySQL数据库服务了。跟着可以运行use databaseName语句操作某个数据库了
㈤ 在Linux下安装完mysql可以启动但是不能使用命令连接 怎么办啊
远程连接吗
启动成功过后在控制台使用 Mysql -uroot -p能登录进去吗?
能的话 那么应该是你主机的端口没有开
使用 vim /etc/sysconfig/iptables
在里面 -A INPUT -j REJECT --reject-with icmp-host-prohibited 行上面添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
把3306端口打开就可以了
㈥ mysql无法远程连接,本地可以
查看MySQL进程是否正常,可以阿里云服务器 ECS 服务器上输入:ps -ef|grep mysqld
mysqld_safe和mysqld都在,说明MySQL进程是正常,若没有这两进程,执行/etc/init.d/mysqld start,启动msyql。
MySQL在本地能连接上,远程连接不上的解决办法
查看mysql监听IP和端口是否正常。
使用:netstat -anpt
监听得地址如果是:::3306或者是0.0.0.0:3306,表示监听所有IP地址,这监听状态是正常。若出现127.0.0.0:3306,说明监听的本地地址,需要在mysql配置文件中将bind-address选项设置为bind-address = 0.0.0.0,重启mysql。
MySQL在本地能连接上,远程连接不上的解决办法
查看用于远程访问的mysql用户权限是否正确。
在本地登入mysql服务器,
use mysql;
SELECT user, host from mysql.user; 查看用于远程访问的mysql用户host的权限,%表示允许所有机器访问。若host为127.0.0.1/localhost,那么这个用户就只能本机访问,则需要将host改为%,可以使用update user set host='%' where user='root';
MySQL在本地能连接上,远程连接不上的解决办法
MySQL在本地能连接上,远程连接不上的解决办法
若以上操作都正常,还是远程还是不能访问的话,可以使用tcpmp在服务器端抓一下3306端口,看是否有数据包,排查以下网络原因。
在服务上输入抓包命令:tcpmp port 3306
然后远程连接mysql数据库,看一下服务端是否有数据包。
MySQL在本地能连接上,远程连接不上的解决办法
如果没有数据包,查一下阿里云服务器 ECS下的安全组件中的配置
MySQL在本地能连接上,远程连接不上的解决办法
若安全组件中的配置中,入口未对数据库服务监听的3306端口放开,则需要将3306端口放开。如下图,并没有3306端口,则表示未放开该端口。
MySQL在本地能连接上,远程连接不上的解决办法
MySQL在本地能连接上,远程连接不上的解决办法
在阿里云服务器 ECS下的安全组件中的配置,放开3306端口。单击添加安全组规则,如下图:
MySQL在本地能连接上,远程连接不上的解决办法
MySQL在本地能连接上,远程连接不上的解决办法
㈦ 如何使用mysql命令连接mysql数据库
1、连接到本机上的MYSQL命令行
首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是如果-p后带有用户密码,那么-p与密码之间必须没有空格,否则让你重新输入密码.例如以下都是合法的登陆:(帐号:root 密码:123)
mysql -u root -p
mysql -uroot -p
mysql -uroot -p123
如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>
2、连接到远程主机上的MYSQL命令行
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)
㈧ 如何用python连接mysql数据库
在 Python 语言环境下我们这样连接数据库。
In [1]: from mysql import connector
In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")
但是连接数据库的背后发生了什么呢?
答案
当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由MySQL 协议规定。MySQL 协议:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。
MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。
2. MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。
3. MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。
4. MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。
㈨ Navicat连接MySQL出错,如何解决如何开启mysql允许TCP/ip访问3306窗口 在线跪等高人指点
控件面板管理工具点服务
㈩ mysql 两种连接方式和SSL连接、x509认证
mysql连接可分为socket连接和TCP|IP连接两种。
[root@localhost bin]# mysql -uroot -p123456 -S/tmp/mysql.sock
-S/tmp/mysql.sock可以省略,因为默认参数如下:
假如sock文件另有其它,那么就后面不能省略,需要指定下。
mysql -h127.0.0.1 -P3306 -uroot -p123456
那么问题来了,如何知道当前连接的连接方式?
查看当前连接方式,使用s 或者status命令
Connection: Localhost via UNIX socket 表示使用 socket 进行本地的连接
SSL: Not in use 没有使用SSL
Connection: 127.0.0.1 via TCP/IP 使用TCP/IP 协议进行远程连接
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256 使用了SSL加密
mysql5.7默认是使用SSL的方式来进行通讯的。
/s输出SSL: Not in use,说明当前没有使用SSL连接。
再看下error.log有一个waning:failed to set up SSL because of the following SSL liberary error:SSL context is not usable withut certificate and private key。公密钥文件不存在,所以无法启用SSL的连接方式。
1、进入bin目录执行命令: mysql_ssl_rsa_setup 在/data 根目录 生成相关的*.pem 密钥文件。
2、对新生成到pem文件授权chown mysql:mysql *.pem
3、 /etc/init.d/mysqld restart 重启mysql
4、进入命令客户端执行s
使用IP/TCP远程连接时,s输出 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256。说明已经用上SSL加密。
使用socket进行本地连接,就不会使用SSL加密。s输出SSL: Not in use;
因为SSL开启可能有性能影响。如果不希望使用ssl加密登录连接,那么可以使用下面命令进行禁用:mysql -h127.0.0.1 -uroot -p123456 --ssl-mode=DISABLED
强制一个用户使用ssl
之后david用户就必须使用ssl登录了,否则报错如下:
取消一个用户强制使用ssl
x509认证在开启SSL的基础下,还强制指定用户必须使用client-cert.pem和client-key.pem证书、密钥文件来登录,否则登录不了。x509是mysql最高等级的认证机制。
之前已经在data根目录生成了8个 *.pem文件
把其中client-cert.pem和client-key.pem导出
如下,再使用之前的命令登录。发现登录不了了。
此时想要登录必须在客户端指定SSL CERT File和SSL Key File 如下在navicat中
在mysql workbench中