一、安装mysql并进行配置
1、 安装Mysql服务器以及客户端
sudo apt-get install mysql-server mysql-client
- 安装时需要输入密码,他会弹出一个红色的框,密码默认就是root用户登录的密码。
- 如果安装的时候,没让你输入密码,那就说明你的mysql版本默认是不设置密码,第4步的时候,你也不需要输入密码。
- 安装完成后,默认是启动的,可通过第二步骤查看mysql的启动状态。
2、查看mysql是否安装完成并且已经启动
service mysql status
当显示 active(running),也就是绿色的时候,就说明你的mysql已经安装完成并启动了。
3、查看mysql端口使用情况,默认是3306端口
netstat -nlt|grep 3306
3、登录mysql
mysql -uroot -p
- 执行命令后,是需要输入密码的。
- 如果你在安装的时候,输入了你设置的密码,那么你就用你设置好的密码。
- 如果你在安装的时候没有设置密码,那么就直接按回车,不用输入密码就能进入。
4.切换到mysql数据库
use mysql
5.授权访问+重设密码+创建用户
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
- 你可以通过这句命令修改密码,只需要更换password就行。
- 你也可以通过这句命令进行访问权限授权,@‘%’ 就代表全部允许访问
- 你还可以通过这句命令创建新用户,'root' 是你的默认用户,你可以换成自己所需要的用户名
6.刷新权限
flush privileges;
因为上一步是配置级别的变更,一定要刷新权限,不刷新,不会生效。
7. 退出mysql
exit;
二、允许Navicat等远程客户端访问
1.找到mysql配置文件
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf
2.修改绑定地址
- 你需要bind-address = 127.0.0.1 注释掉,这样就能允许任意网络访问,当然你可以改成指定ip,这样你就可让指定ip访问。
- 你可以通过修改原始的port ,来增加系统的安全性,因为默认都是3306,一些程序都是默认扫这个端口,你换了个端口,被默认攻击的可能性就大大减少了,所以你可以修改成其他端口。
- 如果你修改了自己的端口,不用默认3306,而且想用navicat连接,这个时候,你一定要看看自己的服务器开没开放你设置的端口,默认3306都会开,但是你自己的端口就不一定开了。
- 修改完,wq: 保存即可。
3.重新启动mysql 让你的所有配置生效
service mysql restart;
三、还是连不上怎么排查问题?
有的人是按照我上面的操作一步步下来的,可是,还是连不上。报了下面的错。
这时,请不要慌张,先仔细检查上面的步骤是否正确。如果保持一致,那么真相只有一个:
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
未放开端口!!!!!!!
去找你的运维,或者登录你的云服务器,看看你的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 查询了。