加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限

发布时间:2020-05-24 03:29:11 所属栏目:Linux 来源:互联网
导读:在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限

一、查看3306端口是否开放

netstat-an|grep3306

这样代表端口未打开

>>>netstat-an|grep3306
tcp000.0.0.0:33060.0.0.0:*LISTEN

二、修改访问权限

进入目录/etc/mysql,或者是(/etc/mysql/mysql.conf.d)如下所示

$cd/etc/mysql/

在该目录下,有一个配置文件my.cnf(mysqld.cnf),如下所示

>>>ls
conf.ddebian.cnfdebian-startmy1.cnfmy.cnf

找到my.cnf文件,并打开配置文件

$sudovimmy.cnf

文件打开后有一大段注释说明,不用去管它,直接看到下中的部分:

[mysqld]
#
#*BasicSettings
#
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
skip-external-locking
#
#Insteadofskip-networkingthedefaultisnowtolistenonlyon
#localhostwhichismorecompatibleandisnotlesssecure.
bind-address=127.0.0.1
#
#*FineTuning
#
key_buffer=2048M
max_allowed_packet=500M

找到bind-addresss上一行,注释意思是在默认情况下只允许本地服务访问mysql,所以我们需要注释掉bind-address这条配置信息。注释方法,如下图所示:

#bind-address=127.0.0.1

三、 修改端口号:

在当前这个配置文件,找到

[mysqld]
#
#*BasicSettings
#
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
skip-external-locking

如果这里没有prot =3306这条配置,那么需要在其中增加一条端口配置,如下所示:

port=3306

修改文件后保存。

四、开放root账户访问权限

在第三步中,我们仅仅只是取消了本地访问限制,但是我们还是没有对账户权限进行设置。

重启MySQL服务,并进入MySQL控制台:

#重启mysql
servicemysqlstop
servicemysqlstart
#登陆
mysql-h127.0.0.1-uroot-p

登陆成功界面

YourMySQLconnectionidis2441
Serverversion:5.5.58-0ubuntu0.14.04.1(Ubuntu)

Copyright(c)2000,2017,Oracleand/oritsaffiliates.Allrightsreserved.

OracleisaregisteredtrademarkofOracleCorporationand/orits
affiliates.Othernamesmaybetrademarksoftheirrespective
owners.

Type'help;'or'h'forhelp.Type'c'toclearthecurrentinputstatement.

mysql>

切换到系统数据库“mysql”中:

$usemysql;

查看一下该数据库中的所有的表

$showtables;

界面如下:

mysql>showtables;
+---------------------------+
|Tables_in_mysql|
+---------------------------+
|columns_priv|
|db|
|event|
|func|
|general_log|
|help_category|
|help_keyword|
|help_relation|
|help_topic|
|host|
|ndb_binlog_index|
|plugin|
|proc|
|procs_priv|
|proxies_priv|
|servers|
|slow_log|
|tables_priv|
|time_zone|
|time_zone_leap_second|
|time_zone_name|
|time_zone_transition|
|time_zone_transition_type|
|user|
+---------------------------+
24rowsinset(0.00sec)

我们要修改上图中的最后一张表“user”,看一下这张表有哪些字段:

$descuser;

界面如下:

mysql>descuser;
+------------------------+-----------------------------------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+------------------------+-----------------------------------+------+-----+---------+-------+
|Host|char(60)|NO|PRI|||
|User|char(16)|NO|PRI|||
|Password|char(41)|NO||||
|Select_priv|enum('N','Y')|NO||N||
|Insert_priv|enum('N','Y')|NO||N||
|Update_priv|enum('N','Y')|NO||N||
|Delete_priv|enum('N','Y')|NO||N||
|Create_priv|enum('N','Y')|NO||N||
|Drop_priv|enum('N','Y')|NO||N||
|Reload_priv|enum('N','Y')|NO||N||
|Shutdown_priv|enum('N','Y')|NO||N||
|Process_priv|enum('N','Y')|NO||N||
|File_priv|enum('N','Y')|NO||N||
|Grant_priv|enum('N','Y')|NO||N||
|References_priv|enum('N','Y')|NO||N||
|Index_priv|enum('N','Y')|NO||N||
|Alter_priv|enum('N','Y')|NO||N||
|Show_db_priv|enum('N','Y')|NO||N||
|Super_priv|enum('N','Y')|NO||N||
|Create_tmp_table_priv|enum('N','Y')|NO||N||
|Lock_tables_priv|enum('N','Y')|NO||N||
|Execute_priv|enum('N','Y')|NO||N||
|Repl_slave_priv|enum('N','Y')|NO||N||
|Repl_client_priv|enum('N','Y')|NO||N||
|Create_view_priv|enum('N','Y')|NO||N||
|Show_view_priv|enum('N','Y')|NO||N||
|Create_routine_priv|enum('N','Y')|NO||N||
|Alter_routine_priv|enum('N','Y')|NO||N||
|Create_user_priv|enum('N','Y')|NO||N||
|Event_priv|enum('N','Y')|NO||N||
|Trigger_priv|enum('N','Y')|NO||N||
|Create_tablespace_priv|enum('N','Y')|NO||N||
|ssl_type|enum('','ANY','X509','SPECIFIED')|NO||||
|ssl_cipher|blob|NO||NULL||
|x509_issuer|blob|NO||NULL||
|x509_subject|blob|NO||NULL||
|max_questions|int(11)unsigned|NO||0||
|max_updates|int(11)unsigned|NO||0||
|max_connections|int(11)unsigned|NO||0||
|max_user_connections|int(11)unsigned|NO||0||
|plugin|char(64)|YES||||
|authentication_string|text|YES||NULL||
+------------------------+-----------------------------------+------+-----+---------+-------+
42rowsinset(0.00sec)

字段非常多,就不一一罗列了。我们要用到的只是“Host”和“User”两个字段而已:

$selecthost,userfromuser;

在这张表里,我们看到root用户仅仅只能在本地访问MySQL服务,所以我们要把它修改为“%”,意思是无论在哪里root账户都能够访问数据库服务:

$updateusersethost='%'whereuser='root';

注意,在真实的生产环境中,并不建议这么修改,因为安全风险太大。我建议根据实际情况将root用户的host项修改为某个指定的ip地址,或仍然保持localhost

最后一项设置,开放root账户所有权限:

$grantallprivilegeson*.*to'root'@'%'identifiedby'你的root账户密码';

使各种权限设置立即生效:

$flushprivileges;

选择出host列和user列的数据:

$selecthost,userfromuser;

五、再次确认3306端口状态

先退出mysql,查看3306端口状态

$quit
$netstat-an|grep3306

如果看到下图这样,就可以了:

netstat-an|grep3306
tcp000.0.0.0:33060.0.0.0:*LISTEN

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读