Ubuntu 16.04.2 安装 mysql

Ubuntu 16.04.2 安装 mysql

linux系统版本

$ lsb_release -a

LSB Version:    core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:    16.04
Codename:   xenial

install 安装mysql 服务

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

安装过程中,会提示输入 root 用户的密码,需要重复输入两次

测试是否安装成功

$ sudo netstat -tap | grep mysql

使用密码登录测试

mysql -uroot -p

-uroot 使用root 用户登录,会提示输入密码

远程登录配置

注释 bind-address = 127.0.0.1
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

使用密码登录mysql 命令行配置权限
$ mysql -uroot -p
mysql> grant all on *.* to root@'%' identified by 'password';
mysql> flush privileges;

"*.*":第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。  
root:授予root账号。    
“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。    
“password”:分配账号对应的密码,这里密码自己替换成你的mysql root帐号密码。

重启mysql

$ sudo /etc/init.d/mysql restart

远程登录测试报错

2003 - Can't connect to MySQL server on '....' (10038)

启动防火墙

我使用的是阿里云服务器,直接在阿里云控制台开启3306 端口,安全组配置。

安全组配置

或者使用linux 命令行开启 防火墙。

连接测试,远程navicat 连接mysql ,连接成功

修改root 登录密码

$ mysql -uroot -p
mysql> set password for 'root'@'localhost'=password('password');
mysql> flush privileges;

修改后发现,本地使用shell ,root用户连接mysql ,密码修改成功,可是远程使用root登录,密码是没有修改的,还是原来的密码。

经过一系列的折腾,解决方案如下;
远程navicat 登录mysql ,查看 mysql 数据库,user 用户表,发现有两个root 用户;

root用户有两个

且查看他们的 password_last_changed 字段,密码的最后修改时间,只有第一个 localhost 的root 用户的密码是修改的,于是修改 另一个用户的密码。重新测试远程登录,密码修改成功,修改步骤如下。

再次使用密码登录mysql 命令行配置权限,并修改远程root登录密码
$ mysql -uroot -p
mysql> grant all on *.* to root@'%' identified by 'new_password';
mysql> flush privileges;

也怪我自己对mysql 使用的不是很熟悉。汗

给指定用户,指定数据库赋权限

$ mysql -uroot -p
mysql> grant all privileges on wordpress.* to wordpress@'%';

你可能感兴趣的:(Ubuntu 16.04.2 安装 mysql)