Linux中的mysql数据库
- 什么是数据库
数据库(database)就是一个存放电子数据的仓库,安装一定的规则和标准结合数据结构和算法对数据进行组织和存储
- SQL语言
SQL:结构化查询语言,全拼是Structured Query Language
-
安装mysql数据库
3.1 基于Debian平台的linux系统,如ubuntu中,可以直接使用apt命令安装
sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*
3.2 CentOS中由于历史原因,如果直接运行 yum install mysql 命令,不会安装mysql,而是安装的MariaBD,因此需按以下步骤:
-
从mysql官网下载mysql仓库,会下载到 mysql80-community-release-el7-3.noarch.rpm 的文件
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
-
如果直接运行 yum install mysql80-community-release-el7-3.noarch.rpm 安装的是8.0版本的,目前大多数使用的依然是5.7版本,如需安装5.7版本,需要使用 vim /etc/yum.repos.d/mysql-community.repo 命令修改 mysql-community.repo文件,将文件中 mysql80的enable值改为0,mysql57的enable值改为1:
[mysql57.community] name=MySQL 5.7 Connunity Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-mysql name=MySQL 8.0 Connunity Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
-
运行 yum install mysql-community-server 安装mysql
-
-
开启数据库服务
- ubuntu: service mysql start|stop|restart|status
- Deepin: systemctl start|stop|restart|status mysqld
- CentOS7: systemctl start|stop|restart|status mysqld
- CentOS6: service mysql start|stop|restart|status
-
连接数据库
各linux系统连接数据库的语法是一样的,为:
mysql -hlocalhost -uroot -p123456 -p3306
- -h:host(ip地址)localhost = 127.0.0.1
- -u:username(用户账号),此处的root跟登录linux系统的root不是同一个
- -p:password(密码)
- -p:port(服务器默认端口3306)
在ubuntu里,root用户的默认密码是空,输入登录linux系统的密码直接登录;在CentOS7中,mysql安装完成后会生成一个临时密码,可以通过命令查看这个默认密码:
cat /var/log/mysqld.log |grep password
输入临时密码mysql连接成功后会显示:mysql>
此时运行 show databases; 命令会报错error 1820,以临时密码登录无法进行任何操作,需修改密码
-
设置mysql 的root用户密码
alter user root@localhost identified with mysql_native_password by ‘新密码’;
第一次使用root连接后最好添加一个新的用户来操作sql,出于安全考虑,日常开发不要使用root用户
GRANT ALL PRIVILEGES on *.* to ‘用户名’@‘localhost’ IDENTIFIED BY “密码” WITH GRANT OPTION;
—创建用户并设置密码
—*.*代表用户可以操作所有的库和表
—主机名可以使用’%',代表运行该用户从认可机器登录
flush privileges;
—刷新使权限生效
-
退出数据库
有4种效果相同的退出方法:
- exit
- quit
- \q
- ctl+d
-
忘记密码?
8.1 打开配置文件:vim /etc/my.cnf ;不同版本的linux,不同版本的mysql,不同的安装方法,配置文件的名字及路径不同,可能的路径有 /ets/mysql/mysql.d/mysql.cnf
8.2 在配置文件中添加:
[mysql] skip-grant-tables
如果文件中已经存在[mysql],只需要将skip-grant-tables添加到下方即可
8.3 修改文创后保存并退出,重启服务:
sudo systemctl restart mysql.service
8.4 sudo mysql -uroot重新连接,此处可以不使用密码直接登录
8.5 执行 update mysql,user set authentication_string=passwod(‘密码’) where user=‘root’; 修改root用户密码
8.6 flush privileges刷新,使策略立即生效,并退出mysql客户端
8.7 修改 /etc/mysql/mysql.cnf文件,注释掉第二步添加的两段内容
8.8 运行 sudo systemctl restart mysql.service 重启服务器
8.9 现在可以使用新密码登录mysql服务器了
-
数据库常用操作
9.1 创建账号及授权
-
8.0之前的版本
GRANT ALL PRIVILEGES on *.* to ‘用户名’@‘主机’ IDENTIFIED BY “密码” WITH GRANT OPTION;
flush pribileges;
-
ALL PRIVILEGES:全部权限,一共14个权限,也可以指定:
–select
–insert
–update
–delete
–delete
–create
–drop
–index
–alter
–grant
–references
–reload
–shutdown
–process
–file
-
*.*:运行操作的数据库和数据表
-
主机名:允许用户从哪个主机登录,%表示允许从任意主机登录
-
WITH GRANT OPTION:带有该子句表示允许用户将自己的权限授予其他用户
-
-
8.0之后的版本
GRANT USER ‘用户名’@‘主机’ IDENTIFIED BY ‘密码’; --创建用户
GRANT ALL ON *.* TO ‘用户名’@‘主机’ WITH GRANT OPTION;–授权
9.2 修改密码
update user set authentication_string=password('你的密码') where user='root' 或者 alter user '用户名'@'主机名' identified with mysql_native_password by '你的密码'; alter方法受安全策略影响,密码需要有大小写特殊字符等
9.3 查看权限
show grants; --查看当前用户的权限 show grants for 'abc'@'localhost'; --查看用户abc的权限
9.4 回收权限
revoke all privileges on *.* from 'abc'@'localhost'; --回收用户abc的所有权限 revoke grant option on *.* from 'abc'@'localhost'; --回收权限的传递
9.5 删除用户
drop user 用户名@'%';
- 创建可以远程登录的mysql账号
-
创建一个允许任意主机登录的账号
GRANT ALL PRIVILEGES on *.* to 'Jack'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; flush privileges;
-
修改mysql配置文件(不同linux系统,不同版本mysql,配置文件的存储路径不同,ubuntu18.04中mysql的配置文件保存在/etc/mysql/mysql.conf.d/mysql.cnf中;CentOS7.7中其配置文件保存在/etc/my,cnf中
sudo vim /etc/my.cnf
-
如果配置文件中有 bind-address=127.0.0.1代码,将其注释掉,让计算机允许mysql远程登录
-
打开服务器的3306端口
-
使用客户端远程登录到mysql数据库
sudo mysql -uJack -h 远端服务器地址 -p 3306 -p
-