Ubuntu系统使用apt安装的mysql在安装过程中没有给出输入密码的选项,而是给了一个默认的用户名和密码,那只能根据默认用户名和密码登录mysql后修改用户名和密码了.
查看默认用户名和密码
//打开文件 /etc/mysql/debian.cnf查看默认用户名和密码 [client] host = localhost user = debian-sys-maint password = 24j7HYTEqgPv0Ozg socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = 24j7HYTEqgPv0Ozg socket = /var/run/mysqld/mysqld.sock
根据默认的用户名和密码登录mysql(输入命令后把上面的密码粘贴进去)
$ mysql -udebian-sys-maint -p
在这一步可能会报如下的一个错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
遇到这个错误修改mysql配置文件将套接字指定为mysql默认分配的就行了,修改/etc/my.cnf
,将socket
的值改为/var/run/mysqld/mysqld.sock
即可.
修改用户名和密码
登录mysql之后执行如下语句
mysql> update mysql.user set authentication_string=password('newpassword') where user='root';
刷新权限列表
mysql> flush privileges; mysql> exit;
重启mysql
$ sudo service mysql restart
使用刚设置的root
账号登录时可能会遇到如下问题
ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
产生这个问题的原因是Ubuntu默认安装的mysql使用的是UNIX auth_socket plugin
,意味着mysql用户名必须和登录当前Ubuntu系统的用户名一样才能登录,查看一下root用户使用的是什么类型的,先使用默认用户名和密码登录mysql,然后查看
mysql> USE mysql; mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------------------+ | User | plugin | +------------------+-----------------------+ | root | auth_socket | | mysql.sys | mysql_native_password | | debian-sys-maint | mysql_native_password | +------------------+-----------------------+
显然root
账户使用的是auth_socket
,修改root
账户使用mysql_native_password
即可
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit;
重启mysql重新登录即可
$ sudo service mysql restart