来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 今天在ubuntu 12 04安装了mysql , 使用命令:sudo apt-get install mysql-server mysql-client 安装安装以后启动正常,但是发现mysqld 服务只监听3306端口的127 0 0 1 ip地址,sudo netstat -n...
今天在ubuntu 12.04安装了mysql , 使用命令: sudo apt-get install mysql-server mysql-client安装 安装以后启动正常,但是发现mysqld 服务只监听3306端口的127.0.0.1 ip地址, sudo netstat -ntlp tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 5459/mysqld 于是上网查了一下,发现时由于my.cnf配置文件中 bind-address = 127.0.0.1 这说明它之间听来自127.0.0.1的请求,于是,我停掉了mysql 服务,然后修改了该配置文件。 bind-address = 0.0.0.0 这代表mysql 会监听来自任何IP地址的请求(当然,端口号必须是3306) . 修改的时候我发现该文件为只读文件,于是,我直接将文件权限改为777 sudo chmod 777 my.cnf 然后,我重启mysql服务,发现,服务无法重启,报错,无日志 无奈之下,我只好卸载mysql 然后重新安装 sudo apt-get remove mysql-server mysql-client我发现这种方式无法完全卸载mysql,通过查询github,我得知,必须加purge参数,从而完整卸载包括配置文件在内的所有文件,同时,必须加上mysql-common sudo apt-get install remove --purge mysql-server mysql-client mysql-common 重新安装后,问题依旧:只要更改了配置文件my.cnf, mysql就无法重启了。 经过多方排查,我发现这是由于我更改了my.cnf权限,使得该文件能够被任何用户读取和修改,这是mysql不允许的。于是,我在更改了my.cnf之后, 重新把权限改回默认权限644,再次重启mysql,成功 这时候,我用sudo netstat -nltp 查看3306端口监听情况,发现已经变成: sudo netstat -ntlptcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5459/mysqld 这意味着mysqld服务已经开始监听外部ip地址的请求了,但是这不意味着来自外部ip地址的请求有权限操作mysql数据库,必须为其添加权限: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; FLUSH PRIVILEGES;这时候,就可以从外部ip地址访问数据库了。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com