zoukankan      html  css  js  c++  java
  • 记录 mysql 使用时遇到的问题

    1,linux平台上mysqld和mysql的区别。
    首先,mysql数据库是标准的c/s架构,yum安装时注意到了,有mysql和mysql-server包
    mysql是客户端的工具,mysqld 是服务端的进程。
    需要先启动mysqld进程,才能是使用mysql命令登录。

    mysql包是一个命令行的工具,一般就用于登录mysql服务端,并进行之后操作。
    常用mysql命令行工具还有以下几个。
    mysql 、 mysqladmin 、 mysqlbinlog 、 mysqldump 、 mysqlimport/source
    、 mysqlshow 、 myisampack 、 mysqlcheck


    2,mysqld 启动报错提示
    [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
    此处 mysql是出于安全考虑,默认拒绝用root账号启动mysql服务。
    解决方法:
    (1)通过在命令后面加上--user=root 进行强制使用root账号启动。这样是最快的。
    mysqld --user=root
    (2)使用一个普通用户进行启动mysqld 。这个用户必须是属于mysqld用户组,且在my.cnf文件中。
    在配置文件中加上user=mysql 进行指定mysql用户来启动mysql服务。这样是最好的。再次启动mysql.

    3,mysql登录时遇到 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    这个需要重置mysql的root 用户密码
    mysql 8 以上的修改语句如下。
    ALTER user '需要修改密码的用户名'@'localhost' IDENTIFIED BY '重置的密码'

    4,Mysql 5.7后初始密码不为空,为了安全,会有一个随机密码生成。
    使用时需要初始化数据库。
    命令在此:mysqld --initialize-insecure --user=mysql
    文档表明,使用-initialize生成随机密码,使用-initialize-insecure生成空密码。
    默认帐号root,后面的-user=mysql不更改
    用 grep “temporary password” /var/log/mysql.log 搜索自动生成的密码。

    5,MySQL启动和关闭命令总结。
    ----启动MySQL
    mysqld --defaults-file=/etc/my.cnf &
    mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
    service mysql start
    /etc/init.d/mysql start
    mysqld_multi start #多实例
    net start mysql #Windows
    ----关闭MySQL
    mysqladmin -uroot -plhr -S /tmp/mysql3306.sock shutdown
    service mysql stop
    /etc/init.d/mysql stop
    mysqld_multi stop #多实例
    net stop mysql #Windows
    --杀死mysql
    killall mysqld
    killall -9 mysqld

    6,Navicat 连接MySQL 8.0.11 出现2059错误
    原因:mysql 8 之前的版本中加密规则是mysql_native_password,
    而在mysql8之后,加密规则是caching_sha2_password
    解决:更改加密规则
    mysql -u root -p #登录

    use mysql; #选择数据库
    # 远程连接请将'localhost'换成'%'

    ALTER USER 'root用户'@'localhost' IDENTIFIED BY '当前密码' PASSWORD EXPIRE NEVER; #更改加密方式

    ALTER USER 'root用户'@'localhost' IDENTIFIED WITH mysql_native_password BY '当前密码'; #更新用户密码

    FLUSH PRIVILEGES; #刷新权限

    7,使用yum安装mysql时注意。
    yum install mysql 这个只是安装了客户端
    yum install mysql-server 这才是服务端
    此外,还需要安装 mysql-devel 包

    如果Centos7的yum源找不到mysql-server这个包的话,就会报错,可以去mysql的源地址下载安装

    原因:CentOS7自带有MariaDB而不是MySQL,MariaDB和MySQL一样也是开元的数据库
    解决方案:如果必须要安装MySQL,首先必须添加mysql社区repo通过输入
    命令: rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

    8,mysql的8版本以上就没有查询缓存的功能了。这个需要注意。

    9,mysql 重置root密码。
    - ​ 编辑配置文件 /etc/my.cnf ,在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证

    - 接下来我们需要重启MySQL,使用service mysqld restart
    - 进入mysql中重置密码,
    ```
    mysql> update user set password="你的新密码" where user="root" and host="localhost";
    mysql> flush privileges;
    mysql> quit
    ```
    - 退出,注释掉配置文件新增的那行,重启。再登录。


    10,mysql 的用户管理。
    使用root登录后,在mysql.user 表里,可以select host,user,password 等信息。
    也是在这里配置远程登录主机。host='%'表示任意主机远程登录。

    修改mysql的用户密码,分别使用grant、alter、set修改
    ①mysql> grant all on *.* to '用户名'@'登录主机' identified by '密码';

    ②mysql> alter user '用户名'@'登录主机' identified by '密码(自定义)';

    ③mysql> SET PASSWORD FOR '用户名'@'登录主机' = PASSWORD('密码');
    #使用这种方式设置后,有时候密码没有被加密。

    tips:
    密码必须是被加密的,客户端才能正常登录。
    一般使用update语句修改的密码都没有加密,所以登录会有问题。

    mysql5.7以上的版本里,password字段都替换成了authentication_string
    在虚拟机v2上mysql5.7上可以设置不符合要求的简单的密码,首先跳过了登录验证,
    然后进去修改root的密码,再没有说密码不符合要求的报错提示了



  • 相关阅读:
    Annotations 注解
    领域驱动设计 贫血模型 VO、DTO、DO、PO 展示层 服务层 视图对象 视图对象 展示层 数据传输对象 领域对象 持久化对象 持久层 单一职责
    ECDHE
    Asp.net 中的 DataGrid 和 GridView 批量更新
    判断其ip所属地区
    经典语句!!!
    利用Cache防止同一帐号重复登录
    request与request.form的区别
    服务器应用程序不可用
    用JQuery修正PNG显示问题
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15257223.html
Copyright © 2011-2022 走看看