zoukankan      html  css  js  c++  java
  • 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服务

  • 相关阅读:
    条件注释判断浏览器版本<!--[if lt IE 9]>
    动态加载js、css 代码
    C趣味题目
    shell脚本
    Logiscope学习网址
    将double型小数点后面多余的零去掉
    qt和makefile学习网址
    微软推出的工作流引擎
    java例子
    js 定义hash类
  • 原文地址:https://www.cnblogs.com/Loveyinran/p/13906798.html
Copyright © 2011-2022 走看看