美文网首页
Ubuntu安装mysql并设置可远程访问

Ubuntu安装mysql并设置可远程访问

作者: 一击必中 | 来源:发表于2021-07-17 11:47 被阅读0次

一、安装mysql并进行配置

1、 安装Mysql服务器以及客户端

sudo apt-get install mysql-server mysql-client
  1. 安装时需要输入密码,他会弹出一个红色的框,密码默认就是root用户登录的密码。
  2. 如果安装的时候,没让你输入密码,那就说明你的mysql版本默认是不设置密码,第4步的时候,你也不需要输入密码。
  3. 安装完成后,默认是启动的,可通过第二步骤查看mysql的启动状态。

2、查看mysql是否安装完成并且已经启动

service mysql status
mysql启动情况

当显示 active(running),也就是绿色的时候,就说明你的mysql已经安装完成并启动了。

3、查看mysql端口使用情况,默认是3306端口

netstat -nlt|grep 3306
3306端口.png

3、登录mysql

mysql -uroot -p 
登录成功
  1. 执行命令后,是需要输入密码的。
  2. 如果你在安装的时候,输入了你设置的密码,那么你就用你设置好的密码。
  3. 如果你在安装的时候没有设置密码,那么就直接按回车,不用输入密码就能进入。

4.切换到mysql数据库

use mysql

5.授权访问+重设密码+创建用户

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
  1. 你可以通过这句命令修改密码,只需要更换password就行。
  2. 你也可以通过这句命令进行访问权限授权,@‘%’ 就代表全部允许访问
  3. 你还可以通过这句命令创建新用户,'root' 是你的默认用户,你可以换成自己所需要的用户名

6.刷新权限

flush privileges;

因为上一步是配置级别的变更,一定要刷新权限,不刷新,不会生效。

7. 退出mysql

exit;
4,5,6,7步骤操作

二、允许Navicat等远程客户端访问

1.找到mysql配置文件

cd /etc/mysql/mysql.conf.d
vim mysqld.cnf

2.修改绑定地址

mysqld.cnf 文件信息
  1. 你需要bind-address = 127.0.0.1 注释掉,这样就能允许任意网络访问,当然你可以改成指定ip,这样你就可让指定ip访问。
  2. 你可以通过修改原始的port ,来增加系统的安全性,因为默认都是3306,一些程序都是默认扫这个端口,你换了个端口,被默认攻击的可能性就大大减少了,所以你可以修改成其他端口。
  3. 如果你修改了自己的端口,不用默认3306,而且想用navicat连接,这个时候,你一定要看看自己的服务器开没开放你设置的端口,默认3306都会开,但是你自己的端口就不一定开了。
  4. 修改完,wq: 保存即可。

3.重新启动mysql 让你的所有配置生效

service mysql restart;

三、还是连不上怎么排查问题?

有的人是按照我上面的操作一步步下来的,可是,还是连不上。报了下面的错。


连接不上.png

这时,请不要慌张,先仔细检查上面的步骤是否正确。如果保持一致,那么真相只有一个:

未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!

去找你的运维,或者登录你的云服务器,看看你的3306或你自己设置的那个端口,允不允许访问。

四、放开group by 语句查询

如果不放开sql查询模式,当你在语句中使用group by 时,你的查询会报错。
this is incompatible with sql_mode=only_full_group_by

Caused by: java.sql.SQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'logistics.b.area_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:391)
    at net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy.execute(PreparedStatementSpy.java:443)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3409)
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3407)
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:498)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
    at com.github.pagehelper.PageInterceptor.executeAutoCount(PageInterceptor.java:201)
    at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:113)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
    at com.sun.proxy.$Proxy251.query(Unknown Source)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
    at sun.reflect.GeneratedMethodAccessor231.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
    ... 114 common frames omitted

这是时候你应该需要放开mysql的查询模式

# 进入mysql文件夹
cd /etc/mysql
# 编辑my.cnf 文件
vim my.cnf 
# 在末尾附值
[mysqld]
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
效果图
# 重启数据库
service mysql restart 

这样你的mysql就支持数据库group by 查询了。

相关文章

网友评论

      本文标题:Ubuntu安装mysql并设置可远程访问

      本文链接:https://www.haomeiwen.com/subject/meqwpltx.html