mysql设置远程访问

windows服务器

1.用户授权

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY  'your password';

flush privileges;%表示多机器。

2.开放3306端口

注释掉在服务端MySQL文件夹下找到my.ini文件bind-address。

注意服务器的默认安全组是否开放端口。

3.防火墙设置

关闭服务端防火墙(不推荐),新建规则开放80,3306端口。要注意与远程访问服务器时使用普通的ftp。

【开启】---【控制面板】--【Windows防火墙】--【高级设置】--【入站规则】--【新建规则(在界面的最右边)】---【端口】--【Tcp】--输入【特定本地端口(我这边就是输入8080)】--【允许连接】--【具体情况下可配置只允许访问的用户,这边没有配置,直接下一步】--【配置可访问的计算机,这边也没有配置,直接下一步】--【域,专用,公用都选择上,下一步】--【输入规则名称(比如我这边是要开发tomcat让外面访问,就起名TomcatServer)】--【完成即可】

linux服务器

1.登陆数据库。mysql -uroot -p(密码)第一次密码是123456

2.GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

3.flush privileges;

4.注释

/etc/mysql/my.cnf

将bind-address    = 127.0.0.1设置成bind-address    = 0.0.0.0(设备地址)或者注释掉

5.设置防火墙

设置防火墙允许3306端口
vi /etc/sysconfig/iptables
添加-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
(注意添加在-A INPUT -j REJECT --reject-with icmp-host-prohibited之前,否则可能导致规则不生效)
重启防火墙service iptables restart

 修改密码

修改的用户都以root为列。
一、拥有原来的myql的root的密码;

方法一:
在mysql系统外,使用mysqladmin
mysqladmin -u root -p password "test123"
Enter password: 【输入原来的密码】
方法二:
通过登录mysql系统,
mysql -uroot -p
Enter password: 【输入原来的密码】
mysql>use mysql;
mysql> update user set password=passworD("test") where user='root';
mysql> flush privileges;
mysql> exit;      

二、忘记原来的myql的root的密码;

首先,你必须要有操作系统的root权限了。要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤。
类似于安全模式登录系统,有人建议说是pkill mysql,但是我不建议哈。因为当你执行了这个命令后,会导致这样的状况:
/etc/init.d/mysqld status
mysqld dead but subsys locked
这样即使你是在安全模式下启动mysql都未必会有用的,所以一般是这样/etc/init.d/mysqld stop,如果你不幸先用了pkill,那么就start一下再stop咯。
mysqld_safe --skip-grant-tables &
&,表示在后台运行,不再后台运行的话,就再打开一个终端咯。
mysql
mysql> use mysql;
mysql> UPDATE user SET password=password("test123") WHERE user='root';   
mysql> flush privileges;
mysql> exit;                         
##本来mysql是不分大小写的,但是这个是修改的mysql中的mysql数据库的具体的值,要注意到。

原文地址:https://www.cnblogs.com/cosyer/p/6566078.html