secoder

  MySQL是最流行的关系型数据库管理系统,那么问题来了:什么是关系型数据库呢?还有其他类型数据库嘛?

一、数据库类型

   关系型数据库:数据结构是表,由二维表及其之间的联系组成的数据组织(MySQL、SQLServer)

优点:
    (1)易于维护:都是使用表结构,格式统一;
    (2)使用方便:SQL语言通用,可用于复杂查询;
    (3)复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询
缺点:
    (1)读写性能比较差,尤其是海量数据的高效率读写;
    (2)固定的结构,灵活差;
    (3)高并发读写需求,关系型数据库对硬盘I/O是很大的瓶颈

   非关系型数据库:严格上不是一种数据库,而是一种数据结构化存储方法的集合,也可以是文档或键值对等(Redis、MongoDB)

优点:
    (1)格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式
    (2)速度快:可以使用硬盘或随机存储器作为载体,关系型只能使用硬盘
    (3)高扩展性
    (4)成本低:数据库部署简单,基本都是开源的
缺点:
    (1)不提供SQL支持,学习和使用成本较高
    (2)无事务处理
    (3)数据结构相对复杂,复杂查询性能

二、 mysql环境配置

  老生常谈,工欲善其事必先利其器!相对于windows系列的下一步下一步的安装,我们着重看下Ubuntu环境下的MySQL安装与配置踩过的坑吧。

1.卸载mysql

  为什么要先卸载呢?你能找到这篇文章,可能此刻的你已经在焦虑安装MySQL为什么老不成功呢,那么先按下面卸载掉它;如果你是第一次安装MySQL的话,请忽略这一步的操作。

# 先更新下Ubuntu的软件
sudo apt-get update

# 删除 mysql-server
sudo apt-get remove mysql-server
# 删除和mysql相关的服务
sudo apt-get autoremove mysql-server
# 删除 mysql-common
sudo apt-get remove mmysql-common
# 清除残留数据
dpkg -l | grep ^rc | awk \'{print $2}\' | sudo xargs dpkg -P

2.安装mysql

# 坑就在这里,记得之前安装的时候是会让输入用户名和密码的,但不知道怎滴就没了
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

# 查看MySQL服务是否安装成功
sudo netstat -tap | grep mysql

3.修改mysql配置文件

sudo vi /etc/mysql/mysql.conf.d

\'
# 将 bind-address=127.0.0.1 修改为 bind-address=0.0.0.0
# 也可以改成你指定终端的IP地址
bind-address=0.0.0.0
\'
# 启动MySQL服务
sudo /etc/init.d/mysql restart

# 重启MySQL服务
sudo /etc/init.d/mysql restart

4.命令行操作数据库

$ sudo mysql -u root -p
Enter password: 
# 直接就按Enter键就行了,因为在安装mysql-server的时候没有设置用户名和密码;虽然也可以操作数据库但是操作起来非常的不方便。

# 如果在数据库连接工具中连接该数据库就会报错:ERROR 1698 (28000): Access denied for user \'root\'@\'localhost\'

mysql> USE mysql;
mysql> SELECT user, plugin FROM mysql.user;
# 查询结果
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | mauth_socket          |
| mysql.session    | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
| root             | mysql_native_password |
+------------------+-----------------------+
5 rows in set (0.00 sec)
# 结果发现root的plugin=\'auth_socket\'并不是本地密码,因此需要修改它

# 修改root账户的密码和plugin的本地密码验证方式
mysql> UPDATE mysql.user SET authentication_string=PASSWORD(\'123\'), plugin=\'mysql_native_password\' WHERE user=\'root\';

# 刷新
mysql> FLUSH PRIVILEGES;

# 退出
mysql> exit;

# 用再次登录的时候就输入用户名密码就可以登录成功了

5.命令行操作数据库

mysql> SET GLOBAL validate_password_policy=0;
mysql> SET GLOBAL validate_password_mixed_case_count=0;
mysql> SET GLOBAL validate_password_number_count=3;
mysql> SET GLOBAL validate_password_special_char_count=0;
mysql> SET GLOBAL validate_password_length=3;
mysql> UPDATE mysql.user SET authentication_string=PASSWORD(\'123\'), plugin=\'mysql_native_password\' WHERE user=\'root\';
mysql> FLUSH PRIVILEGES;
mysql> exit;

6.访问数据库

-- 解决密码问题:https://blog.csdn.net/qq_32799165/article/details/83574665
--   mysql -u root -h 127.0.0.1 -p
GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'\'IDENTIFIED BY \'rootpassword\' WITH GRANT OPTION;
FLUSH PRIVILEGES;

7.授权管理

-- 用户管理特殊命令(PS:用户权限相关数据保存在mysql书库的user表中,不建议直接对其操作)
--   创建用户
           CREATE USER \'用户名\'@\'IP地址\' IDENTIFIED BY \'密码\';
--   删除用户
           DROP USER \'用户名\'@\'IP地址\';
--   修改用户
           RENAME USER \'用户名\'@\'IP地址\' TO \'新用户名\'@\'新IP地址\';
--   修改密码
           SET PASSWORD FOR \'用户名\'@\'IP地址\' = PASSWORD(\'新密码\');
--
-- 用户权限管理(默认权限什么都没有)
--   查看权限
           SHOW GRANTS FOR \'用户名\'@\'IP地址\';
--   授权
--   权限[      ALL PRIVILEGES  除grant外的所有权限
--             SELECT          仅查权限
--             SELECT,INSERT   查和插入权限
--             ...
--             USAGE                   无访问权限
--             ALTER                   使用alter table
--             ALTER ROUTINE           使用alter procedure和drop procedure
--             CREATE                  使用create table
--             CREATE ROUTINE          使用create procedure
--             CREATE TEMPORARY TABLES 使用create temporary tables
--             CREATE USER             使用create user、drop user、rename user和revoke  all privileges
--             CREATE VIEW             使用create view
--             DELETE                  使用delete
--             DROP                    使用drop table
--             EXECUTE                 使用call和存储过程
--             FILE                    使用select into outfile 和 load data infile
--             GRANT OPTION            使用grant 和 revoke
--             INDEX                   使用index
--             INSERT                  使用insert
--             LOCK TABLES             使用lock table
--             PROCESS                 使用show full processlist
--             SHOW DATABASES          使用show databases
--             SHOW VIEW               使用show view
--             UPDATE                  使用update
--             RELOAD                  使用flush
--             SHUTDOWN                使用mysqladmin shutdown(关闭MySQL)
--             SUPER                   使用change master、kill、logs、purge、master和set global。还允许mysqladmin

分类:

技术点:

相关文章:

  • 2021-08-27
  • 2021-09-25
  • 2021-07-28
猜你喜欢
  • 2021-05-01
  • 2021-06-15
  • 2021-11-14
  • 2021-10-24
相关资源
相似解决方案