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库中
- 首先找到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了