Linux下MySQL的安装与管理【精通MySQL系列一】

一、在ubuntu下安装MySQL

使用ubuntu18.04(阿里云或华为云服务器)
apt安装mysql-server

sudo apt install mysql-server -y

在安装成功之后,试着连接mysql服务器

mysql -uroot -proot

如果是第一次通过mysql客户端工具连接mysql服务器,可能会出现连接不成功。此时查看用户名和口令。

> cd /etc/mysql
> sudo cat debian.cnf 
[client]
host     = localhost
user     = debian-sys-maint
password = QCmROFHEIL2pyMUR
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = QCmROFHEIL2pyMUR
socket   = /var/run/mysqld/mysqld.sock

在此文件中,使用user为debian-sys-maint, 口令使用QCmROFHEIL2pyMUR, 则使用mysql服务器命令如下:

> mysql -u debian-sys-maint -pQCmROFHEIL2pyMUR

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.26-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

二、 配置root用户

2.1 修改root的口令和host

mysql> use mysql;

打开mysql的库, 可以使用 show databases; 命令查看所有的数据库。

进入mysql库之后,可以查看库中的所有表(show tables),其中有一个user表,表示数据库系统的用户表,下面的语句是查看当前DB系统中所有的用户信息。

mysql> select user, host, authentication_string from user;

查看用户名、host主机, authentication_string授权口令(密文)。发现root用户没有口令。以下命令修改root 的host和口令。

mysql> update user set 
     > host='%', authentication_string=password('root')
     > where user='root';

2.2 授权root可以被远程连接

将所有的库下所有对象的权限都授予root用户,命令如下:

mysql> grant all privileges on *.* to 'root'@'%'
     > identified by 'root';

刷新权限

mysql> flush privileges;

2.3 重启mysql服务器

mysql> exit

退出mysql的连接。

> sudo service mysql restart

或者使用systemctl命令重启mysql服务器

> sudo systemctl restart mysql

2.4 使用root用户连接

> mysql -uroot -proot
mysql> 

正常情况下,则会连接成功。

三、配置远程连接及字符集

3.1 查看当前mysql下的字符集

mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)

如果character_set_database 和 character_set_server两个设置不是utf8,则修改服务端和客户端的配置文件。

3.2 配置服务端的文件

服务器的配置文件位置: /etc/mysql/mysql.conf.d/mysqld.cnf

打开这个文件,在[mysqld] 下方添加字符集, 另外,修改bind_address为0.0.0.0 表示任意当前宿主机(mysql服务器安装的当前OS)的IP地址。

> sudo vi /etc/msyql/mysql.conf.d/mysqld.cnf
[mysqld]
#
# * Basic Settings
#
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
character-set-server = utf8  # 配置服务器的字符集
bind-address            = 0.0.0.0  # 任意的、当前的主机地址

3.3 重启服务

> sudo service mysql restart

3.4 使用python脚本测试远程数据库连接

确定当前python环境中安装了 pymysql库,如果没有安装,则执行下面的命令来安装

> pip install pymysql

如果当前没有python的环境,可以安装一个virtualenv,然后创建一个python的环境。

> sudo apt install virtualenv -y
> cd ~
> virtualenv venv -p python3
> source venv/bin/activate 
(venv) > pip install pymysql
(venv) > vi t_db.py

t_db.py文件的内容如下:

import pymysql
conn = pymysql.Connect(    
  'host': '10.36.174.110',
  'port': 3306,
  'user': 'root',
  'password': 'root',
  'db': 'mysql',
  'charset': 'utf8'
)
print('Connected!')

执行python脚本

(venv)> python t_db.py

四、库和表的管理

4.1 创建、修改和删除库

创建库的命令如下:

CREATE DATABASE db_name [default character set utf8;

db_name表示创建数据库的名称, 一般情况下,不区分大小写。

可以通过以下命令查看当前数据库管理系统(RDBMS)中支持的引擎。

mysql>  show engines;

engines

案例1: 创建 “水果商店库” fruit, 字符集设置为utf8.

create database fruit default character set utf8;

将fruit库的字符集修改成gb2312。

alter database fruit default character set utf8;

查看创建数据库的语句

show create database fruit;

删除数据库

drop database fruit;

4.2 创建表及字段类型

4.2.1 创建表的语法

create table table_name(
   field_name field_type[(length)] [约束],
   field_name2 ..., 
) [ engine=InnoDB|MyISAM] [DEFAULT CHARSET=utf8 ]

table_name 指定表名,见名思义。如 t_user, t_order, app_user, os_user, 同类名相似。

field_name 指定字段名, 又称之为属性名.

field_type 字段类型, 常用类型: integer, int, float, varchar,char, date, time, timestamp, text, clob, blob。

约束, 表示对列值的判别,如主键 primary key、唯一 unique、不为空 not null, 外键 foreign key , 默认值 default, 自增 auto_increment 必须与y主键和integer组合使用。

engine 表示数据库的引擎, 不同的引擎表示库的功能(事务性)是不同的,即不同的业务场景使用不同的数据库引擎,一般情况下使用InnoDB。

4.2.2 案例

  1. 创建课程表

    表名 course,

    字段: id 课程编号, name 课程名称,teacher 带课老师

    分析字段的类型:

    ​ id 整型, 主键约束, 自增

    ​ name 字符串, 唯一或不能为空

    ​ teacher 字符串,不能为空

    创建表的sql语句:

    create table cource(
       id integer primary key auto_increment,
       name varchar(20) unique,
       teacher varchar(20) not null
    )
    
  2. 创建教师表 teacher

字段: id, name, phone, age, sex, photo, info

分析字段:

​ age 是数值型,

​ photo 头像 ,保存图片的路径

​ info 个人简介, 应该是文本类型 Text

创建表的SQL语句:

create table teacher(
   id integer primary key auto_increment,
   name varchar(20),
   phone char(11) unique,
   age int,
   sex char(1),
   photo varchar(100),
   info text
);
  1. 创建 学生表 student和成绩表 score [练习]

    学生表的字段分析:

    ​ id 学生编号

    ​ name 姓名

    ​ birthday 出生日志

    ​ city 城市 ,默认值为西安

    创建学生表的SQL语句

    create table student(
       id integer primary key auto_increment,
       name varchar(20),
       birthday date,
       city varchar(20) default '西安'
    );
    

    成绩表的字段分析:

    ​ sid 学生编号

    ​ cid 课程编号

    ​ score 课程成绩

    创建成绩表的SQL语句

    drop table if exists score; 
    create table score(
       sid integer,
       cid integer,
       score float comment '成绩'
    );
    

    扩展

可以在 用户的home目录下,创建sql脚本, 如~/create_score.sql, 内容如下。在连接mysql同时打开某一库之后,可以通过source命令,执行sql脚本文件中的sql语句。

mysql>  source ~/create_score.sql

4.3 修改表

4.3.1 修改字段的语法

alter table table_name 
modify 字段名 类型[(长度)] [约束];

如,修改score表的score字段的类型为int, 默认值为60

alter table score 
modify score int default 60;

4.3.2 修改表名

alter table table_name rename new_table_name;

如,修改score 表名为t_score

alter table score rename t_score;

4.3.3 修改字段的名称

alter table table_name change 原字段名 新字段名 类型[(长度)] [ 约束]

如, 修改t_score表的score字段名为sc

alter table t_score change score sc;

4.3.4 删除字段

alter table 表名 drop 字段名

如, 删除student表的birthday字段

alter table student drop birthday;

4.3.5 查看表结构

mysql> desc student;

4.3.6 删除表

语法:

drop table [if exists] 表名 ;

如,删除teacher表

drop table teacher;

drop table if exists teacher;

猜你喜欢

转载自blog.csdn.net/ahhqdyh/article/details/105137604