ubuntu安装mysql, 修改初始密码一条龙服务

之前写过一篇 mac 修改 mysql 密码的文章, 比较笼统, 正好今天在服务器上新装mysql, 于是记录一下流程及遇到的问题

安装

首先确保服务器上 apt-get 是可用的, 然后执行三条命令

sudo apt-get install mysql-server
apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

执行完三条命令后, 执行sudo netstat -tap | grep mysql

$ sudo netstat -tap | grep mysql
tcp        0      0 localhost.localdo:mysql 0.0.0.0:*               LISTEN      6860/mysqld

如果看到有mysql 的socket 处于listen的状态则表示安装成功

修改密码

登录mysql
mysql -u root -p
会发现登录失败,输不输密码都会失败, 报错如下

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

mysql 初始密码

初次安装mysql, 会在mysqld.log文件中有一个初始密码
一般会在 /var/log/mysqld.log 这个文件中
如果没有这个文件, 可以全局搜索一下

sudo find / -name 'mysqld.log'

如果能找到这个文件, 试着在文件中搜一下

cat /var/log/mysqld.log | grep 'temporary password'

如果找到的话, 就可以用这个密码登录了
找不到的话也别慌, 继续往下看

设置root用户密码

我们可以通过 不输密码的 safe 模式进入到mysql库中

  1. 首先找到mysql的配置文件
    在 /etc/mysq 目录下
    我的目录下有这些文件及目录
conf.d  debian-start  debian.cnf  my.cnf  my.cnf.fallback  mysql.cnf  mysql.conf.d

首先看一下 my.cnf
里面重点的有这两行

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

这说明, /etc/mysql/conf.d/ /etc/mysql/mysql.conf.d/ 这两个目录下的文件也都是mysql的配置文件
最终, 在 /etc/mysql/mysql.conf.d/mysqld.cnf 文件中找到了 详细的配置文件

找到配置文件中的 [mysqld]
在这下面加一行 skip-grant-tables

然后重启 mysql
命令是:

sudo /etc/init.d/mysql restart

这时, 就可以不用密码登录mysql了
mysql -u root -p 回车后直接再回车, 不用输密码
进入MySQL后, 选择 mysql库 use mysql

有个 user 表, 这里保存的就是用户信息
修改用户密码:

update user set authentication_string=password("new_passwd") where user='root';
  • 注意:
    在mysql 5.7版本之前, 用户密码字段是 password, 5.7之后改为了 authentication_string
    查看mysql版本,可以在进入到mysql后, select version(); 查看; 或者再未进入到mysql时, 用 mysql -V 查看

  • 还有个问题, 留意一下user表中 ,root 用户这条记录的 plugin字段的值是否为 mysql_native_password, 如果不是需要改为这个值;有的会是 auth_socket, 这个值是不能用密码登录;关于这个auth_socket, 可以看一下文档:https://dev.mysql.com/doc/mysql-security-excerpt/5.5/en/socket-authentication-plugin.html

如果不修改 plugin 字段的值为 mysql_native_password, 登录msyql时会报错:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

到这里就已经成功修改了root 用户的密码, 回到刚才找到的配置文件, 把添加的那行删掉, 再重启mysql
此时, 用修改后的密码就能成功登录 mysql了

原文地址:https://www.cnblogs.com/zhang-can/p/12405217.html