【Ubuntu】mysql 5.7 server与client安装
# 备份之前的源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old # 修改sources.list文件 sudo vim /etc/apt/sources.list # 清华镜像源,注销掉之前的所有镜像源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # 更新镜像源 sudo apt-get update # 更新软件 sudo apt-get upgrade
采用 apt-get install 方式安装
# 执行下面安装命令 apt update && apt install -y libtinfo5 --allow-remove-essential #安装mysql5.7所需要的依赖 sudo apt-get install mysql-client-core-5.7 # 安装mysql5.7客户端 sudo apt-get install mysql-client-5.7 # 安装mysql5.7服务端(过程中可能需要设置root密码) sudo apt-get install mysql-server-5.7
相关操作
#查看MySQL端口: sudo netstat -anp | grep mysql #查看MySQL服务状态: sudo service mysql status #启动MySQL服务: sudo service mysql start #停止MySQL服务: sudo service mysql stop #重启MySQL服务: sudo service mysql restart
远程连接授权
#h后为IP地址,-u 用户名 -P 端口 mysql -h 192.168.30.114 -u root -P 3306 -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your password' WITH GRANT OPTION; #进入数据库中才执行这个SQL
修改配置文件
#进入 vi /etc/mysql/mysql.conf.d/mysqld.cnf ,在里面找到 bind-address = 0.0.0.0 #重启MySQL服务: sudo service mysql restart
检测开通端口(默认3306)
ufw status #设置默认状态,默认禁止所有连接(所有入站连接) ufw default deny #启用某个端口 ufw allow 3306
修改mysql的默认端口
#进入配置文件的路径 /etc/mysql/mysql.conf.d vim mysqld.cnf port = 3308 #由3306改为3308
安装完成后查看mysql版本和服务
# 查看mysql版本 mysql -V # 查看mysql服务 netstat -tap | grep mysql
未设置或忘了密码解决办法
# 停止mysql服务 sudo service mysql stop # 修改MySQL的登录设置,暂时不校验登陆密码 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 将[mysqld]下的“skip-external-locking”注释掉 # 添加 “skip-grant-tables” 然后保存退出 例如: ================================================ [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql #skip-external-locking skip-grant-tables ================================================= # 重启mysql数据库 sudo service mysql restart # 免密登陆mysql数据库 mysql -u root mysql # 修改root密码 update mysql.user set authentication_string=password('111222333') where user='root'; # 刷新生效 flush privileges; # 还原MySQL的登录设置 # 将[mysqld]下添加的“skip-grant-tables” 删除 # 将“skip-external-locking”的注释放开然后保存退出 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 例如: ================================================ [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking ================================================= # 重启mysql数据库 sudo service mysql restart # 使用新密码登陆mysql mysql -u用户名 -p密码 数据库名 # 例如: mysql -uroot -p111222333 mysql
登陆mysql查看信息
# 直接登陆mysql mysql -u用户名 -p密码 数据库名 # 例如: mysql -uroot -p111222333 mysql # 先登陆后面再输入密码和选择数据库 mysql -u root -p Enter password: “root用户密码” mysql> use mysql # 选择要操作的数据库 # 切换数据库 use 数据库名; # 查看所有数据库 show databases; # 查看登陆数据库中所有的表 show tables; # 查看数据表结构 desc 表名; # 查看登陆用户名 select user(); # 查看登陆数据库库名 select database(); # 查看版本 select version(); # 显示当前时间 select now(); # 查看所有用户的 用户名、可登陆主机、身份验证插件、密码 select user,host,plugin,authentication_string from user; # 查看当前登录用户权限 show grants; # 查看任意用户权限(后面说权限的具体含义) show grants for root@localhost;
创建及删除数据库和用户
# 使用root用户登录数据库 mysql -uroot -p111222333 mysql # 创建数据库 create database "数据库名" charset="数据库编码"; # 例如: create database pydb charset=utf8; # 创建数据库用户 create user "用户名"@"IP地址" identified by "密码"; # 例如: create user 'test0'@'localhost' identified by 'test0111'; # 删除数据 drop database [数据库名]; # 例如: drop database pydb; # 删除数据库用户 drop user '用户名'@'ip地址'; # 例如: drop user 'test0'@'localhost';
给用户赋权限
# 查看用户test0的权限 show grants for test0@localhost; 显示:[GRANT USAGE ON *.* TO 'test0'@'localhost'] USAGE: 表示无权限用户。 # 用test0用户登录pydb数据库 mysql -utest0 -ptest0111 pydb 报错提示无权操作:[ERROR 1044 (42000): Access denied for user 'test0'@'localhost' to database 'pydb'] # 使用root用户给test0用户赋权 grant all privileges on '数据库名'.'表名' to '用户名'@'IP地址' identified by "密码" with grant option; # 例如设置本地客户端访问此用户: mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option; # 设置远程任意客户端访问此用户: mysql> grant all privileges on pydb.* to 'test0'@'%' with grant option; # 刷新权限 mysql> flush privileges; # 查看本地权限 show grants for 'test0'@'localhost'; 回显:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'localhost' WITH GRANT OPTION] # 查看远程权限 show grants for 'test0'@'%'; 回显:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'%' WITH GRANT OPTION] 权限都添加成功了,现在本地客户端和远程客户端都拥有了登陆test0用户操作pydb数据库下的所有表的权限了。 # 赋权命令解释 grant: 赋权关键字 all privileges: 赋权类型,all privileges表示所有权限。也可以赋值具体的权限如:select、update、create、drop等。 on: 表示权限要赋给哪个数据库的哪个表,*.* 表示所有数据库的所有表。 to: 表示权限要赋给哪个用户,格式:”用户名”@”登录IP或域名”。localhost表示本机客户端可登录此用户, %表示任何主机客户端都可以登录此用户,如果配的是具体ip例如'用户名'@'192.168.113',表示只允许192.168.113这个主机客户端登录此用户。 也可以配置IP段例如'用户名'@'192.168.%' identified by: 设置此用户的登录密码,也可以不设置。 with grant option: 表示允许此用户将自己的权限授权给其它用户。 注意: grant添加的权限是自动叠加的,比如第一次添加了select权限后面再添加insert权限,那么此用户就拥有select和insert权限。如果此用户已经拥有所有权限,再添加select权限则此用户还是拥有all privileges所有权限。 # 移除权限 revoke insert on '数据库名'.'表名' from '用户名'@'IP地址'; # 例如移除insert权限: revoke insert on pydb.* from 'test0'@'localhost'; # 例如所有权限: revoke all on pydb.* from 'test0'@'localhost'; # 刷新权限 mysql> flush privileges;
连接中出现报错
#报错一 root@op05:/etc/mysql/mysql.conf.d# mysql -h192.168.30.117 -uroot -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'172.17.0.1' (using password: YES) #或其他报错
解决方法:请注意修改端口、修改 bind-address = 0.0.0.0
1.作者:Syw 2.出处:http://www.cnblogs.com/syw20170419/ 3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 |