Ubuntu18.04中安装mysql,及安装过程中遇到的问题解决

1、执行更新命令:

sudo apt upgrade

2、执行mysql安装命令,出现[Y/n]时输入Y:

sudo apt install mysql-server

3、执行查看mysql服务状态命令,如下图所示是运行状态:

sudo service mysql status

4、此时安装的mysql是没有设置密码的,执行sudo mysql,进入mysql命令行,如下

5、设置密码为 localsense,执行如下命令:

set password for 'root'@'localhost' = password('localsense');

6、设置mysql允许被远程,执行如下命令:

GRANT ALL PRIVILEGES ON . TO 'root'@'%'IDENTIFIED BY 'localsense' WITH GRANT OPTION;

7、刷新mysql系统权限,执行命令:

flush privileges;

8、退出mysql命令行:

exit

9、停止mysql服务,执行命令:

sudo service mysql stop

10、更改mysql配置文件

(目录如下:/etc/mysql/mysql.conf.d/mysqld.cnf),在配置文件注掉 bind-address = 127.0.0.1

也可以通过命令实现修改,执行如下命令:

先安装vim:sudo apt install vim

打开文件命令:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

把输入法调用英文模式,在键盘输入“i”,进入编辑模式

如上图所示,注释掉后,点击键盘上的“esc”键,在输入“:wq”,回车,文件保存成功。

11、启动mysql服务,执行命令:

sudo service mysql start

12、查看mysql服务状态,执行命令:

sudo service mysql status

Mysql安装完成,并可以远程连接。

其他常见问题:

1、提示密码错误,或者忘记数据库连接密码时:

mysql -u root -p命令去连接mysql时,输入密码总是提示失败,或者忘记密码,可以重新设置mysql密码。

解决办法:

先执行如下命令安装vim:sudo apt install vim。(如果之前安装过,此命令跳过即可)

在终端输入如下命令:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

进入到这个配置文件,半角状态下点击键盘上的“i”,进入编辑模式,然后在这个配置文件中的[mysqld]这一块中加入“skip-grant-tables”这句话,如下:

作用:就是让你可以不用密码登录进去mysql。

然后点击键盘中的“Esc”键, 半角模式下输入 :wq,回车退出

A、在终端输入如下命令:service mysql restart 来重启mysql服务

B、在终端上输入如下命令:mysql -u root -p

遇见输入密码的提示直接回车即可,进入mysql后,分别执行下面三句话:

use mysql;

update user authentication_string=password("你的密码") where user="root";

flush privileges;

然后输入quit,退出mysql。

C、重新进入到mysqld.cnf文件中去把刚开始加的skip-grant-tables这条语句给注释掉。如下:

再返回终端输入mysql -u root -p,应该就可以用密码进入数据库了。

2、如果提示的不是密码错误,但是还是连接不上有可能是下面这个原因导致。

A、把skip-grant-tables这个注释去掉使其生效。重启mysql服务,重新进入mysql,先任意选择一个数据库,比如use mysql;

然后输入select user, plugin from user;  看下图:

错误原因是因为plugin root的字段是auth_socket,那我们改掉它,替换为mysql_native_password就行了。输入:

update user set

authentication_string=password("你的密码"),plugin='mysql_native_password' where user='root';

然后回车执行以下,再输入select user,plugin from user;回车,我们能看到root用户的字段改成功了。

最后再给这个语句前加上注释skip-grant-tables,重启mysql服务。

再密码登录,即可成功登录。

3、用navicat远程连接ubuntu 18.04上的mysql时,通过载入的方式,运行服务端数据库脚本,报如下错误时

报错信息如下:Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。
ONLY_FULL_GROUP_BY要求select语句中查询出来的列必须是明确的

解决方案:

A、登录msyql

B、执行命令:SELECT @@sql_mode

查询结果如下:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

C、修改mysqld.cnf:

在mysqld.cnf文件中的[mysqld]节点下添加:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启mysql服务即可。

4、运行数据库脚本发现提示某表不存在时,是因为大小写问题。

解决办法:可以在数据库配置文件中的[mysqld]节点下添加 lower_case_table_names=1,然后重启mysql服务

原文地址:https://www.cnblogs.com/Loveyinran/p/13906798.html