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

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

发布时间:2020-12-13 17:54:52 所属栏目:Linux 来源:网络整理
导读:一、查看3306端口是否开放 netstat?-an|grep?3306 这样代表端口未打开 ?netstat?-an|grep?3306tcp????????0??????0?0.0.0.0:3306????????????0.0.0.0:*???????????????LISTEN 二、修改访问权限 进入目录 /etc/mysql ,或者是(/etc/mysql/mysql.conf.d)如下

一、查看3306端口是否开放

netstat?-an|grep?3306

这样代表端口未打开

>>>?netstat?-an|grep?3306
tcp????????0??????0?0.0.0.0:3306????????????0.0.0.0:*???????????????LISTEN

二、修改访问权限

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

$?cd?/etc/mysql/

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

>>>?ls
conf.d??debian.cnf??debian-start??my1.cnf??my.cnf

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

$?sudo?vim?my.cnf

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

[mysqld]
#
#?*?Basic?Settings
#
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
#
#?Instead?of?skip-networking?the?default?is?now?to?listen?only?on
#?localhost?which?is?more?compatible?and?is?not?less?secure.
bind-address??????????=?127.0.0.1
#
#?*?Fine?Tuning
#
key_buffer??????????????=?2048M
max_allowed_packet??????=?500M

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

#?bind-address??????????=?127.0.0.1

三、 修改端口号:

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

[mysqld]
#
#?*?Basic?Settings
#
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
service?mysql?stop??
service?mysql?start
#?登陆
mysql?-h?127.0.0.1?-u?root?-p

登陆成功界面

Your?MySQL?connection?id?is?2441
Server?version:?5.5.58-0ubuntu0.14.04.1?(Ubuntu)

Copyright?(c)?2000,?2017,?Oracle?and/or?its?affiliates.?All?rights?reserved.

Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?its
affiliates.?Other?names?may?be?trademarks?of?their?respective
owners.

Type?'help;'?or?'h'?for?help.?Type?'c'?to?clear?the?current?input?statement.

mysql>

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

$?use?mysql;

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

$?show?tables;

界面如下:

mysql>?show?tables;
+---------------------------+
|?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??????????????????????|
+---------------------------+
24?rows?in?set?(0.00?sec)

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

$?desc?user;

界面如下:

mysql>?desc?user;
+------------------------+-----------------------------------+------+-----+---------+-------+
|?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????|???????|
+------------------------+-----------------------------------+------+-----+---------+-------+
42?rows?in?set?(0.00?sec)

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

$?select?host,user?from?user;

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

$?update?user?set?host='%'?where?user='root';

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

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

$?grant?all?privileges?on?*.*?to?'root'@'%'?identified?by?'你的root账户密码';

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

$?flush?privileges;

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

$?select?host,user?from?user;

五、再次确认3306端口状态

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

$?quit
$?netstat?-an|grep?3306

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

netstat?-an|grep?3306
tcp????????0??????0?0.0.0.0:3306????????????0.0.0.0:*???????????????LISTEN

(编辑:李大同)

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

    推荐文章
      热点阅读