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 用户;
且查看他们的 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@'%';