自己在工作中,需要配置Mysql,并且需要远程进行访问。 其中碰到的问题都是上网搜进行解决,但是很多人可能没有我碰到的问题多,所以将自己解决配置中的问题记录下来,以便帮助一些像我一样对mysql和ubuntu都比较无措的人。
我的系统是:ubuntu 12.04 32位 或ubuntu 16.04
一、安装mysql
sudo apt-get install mysql-server mysql-client
如果安装过程中出现什么包无法找到或者出错之类的,则使用
sudo apt-get update
基本上安装没有什么问题。但是,如果想卸载mysql,参见http://www.cnblogs.com/steven_oyj/archive/2010/05/24/1742808.html的说明。该网友中的“
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P”
慎用哈。反正我没有用
二、配置远程登录
1)修改配置
// 1. 编辑配置文件
// ubuntu12
$ sudo vi /etc/mysql/my.cnf
// ubuntu 16
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
// 2. 注销掉bind-address=127.0.0.1一行,保存退出
#bind-address=127.0.0.1
// 3. 重启mysql
$ sudo /etc/init.d/mysql restart
2)查看服务是否启动,并且可以看到监听的端口。
$ netstat -aon | grep mysql
a. 如果有多个服务,建议kill掉多余的进程。正常情况下,出现如下的一条结果,说明mysql启动成功。
unix 2 [ ACC ] STREAM LISTENING 12812 /var/run/mysqld/mysqld.sock
b. 如果你没有查看到上述相应信息,你就有必要去查看mysql的log日志文件,log文件位置在my.cnf中通过log_error字段指定。
c. 如果你出现了多条信息,建议将其余所有的mysql进程kill掉,然后使用/etc/init.d/mysql restart重启。
3)使用安装过程中设置的账号密码登录MySQL,执行:
mysql> use mysql
mysql>grant all privileges on *.* to 'your_username'@'%' identified by 'your_password' with grant option;
解释 :*.*的前一个*代表所有数据库,后一个*代表所有数据表。
mysql> flush privileges;
mysql>quit
4)确保3306端口对外开放
// 1. 查看防火墙状态
$ sudo ufw status
// 2. 如果防火墙打开状态进行下面设置
$ sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
//或者
$ sudo ufw allow 3306/tcp
或者直接关闭防火墙
sudo ufw disable
5)至此,自己可以进行远程访问了。
mysql -h[mysql ip] -u[your_username] -p[your_password]
欢迎大家交流。