01 . Mysql简介及部署

时间:2022-07-25
本文章向大家介绍01 . Mysql简介及部署,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Mysql数据库简介

什么是数据?

数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材,数据是信息的表现形式和载体,可以是符号,文字,数字,语音,图像,视频等,数据和信息是不可分离的,数据是信息的表达,信息是数据的内涵,数据本身没有任何意义,数据只有对实体行为产生影响才成为信息。在计算机系统中,数据以二进制信息单元0,1形式表示

什么是数据库?

数据库(Database): 是按照数据结构来组织、存储和管理数据的仓库,给我们提供了一种以关系的方式来存放数据的方法,能够解决文本性存储数据的劣势。

数据库技术构成

数据库系统由硬件部分和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机,存储设备等。软件部分则主要包括DBMS,(DB数据库管理系统)支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术。

数据库系统主要三个部分

数据库:用于存储数据的地方 数据库管理系统:用于 管理数据库的软件 数据库的应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。 数据库(database system) 提供了一个存储空间以存储各种数据,可以将数据库 视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。 数据库管理系统(database Management System,DBMS) 是用户创建。管理和维护数据库时所用的软件,位于用户与操作系统之间,对数据库进行统一管理,DBMS能定义数据的存储结构,提供数据的操作机制,维护数据库的安全性,完整性和可靠性。 数据库的应用程序:(Database Application) 虽然已经有了DBMS、但是在很多情况下,DBMS无法满足对数据库管理的要求,数据库应用程序的使用可以满足对数据管理的更高要,可以使管理数据更加直观,数据库应用程序负责于DBMS进行通信,访问个和管理DBMS数据中存储的数据,允许用户插入,修改,删除DB的数据。 数据库访问技术:不同的程度设计语言会有各自不同的数据库访问技术,程序语言通过这些技术,执行sql语句,进行数据库管理,主要的数据库访问技术有:

# ODBC:(open database connectivity) 开放数据库互联。技术为访问不同的sql数据库提供了一个共同的接口。

# JDBC:(java data base connectivity)java数据库连接,用于java应用程序连接标准方法。

# ADO.NET:是微软在.NET 框架下开发设计的一组用于 和数据源进行交互的 面向对象 类库。

# PDO:(php data object) 为php访问数据定义了一个轻量级、一致性的接口。它提供了一个数据访问抽象层,

数据库分类

关系型数据库

库中有表,几个表之间有关联的,拥有共同的列,称之为关系型数据库

Oracle						# 1521
DB2							# 5000
Mysql,Mariadb				# 3306
SQLServer					# 1433
非关系型数据库

通常是以Key-value形式存储的,不支持SQL语句,没有表结构,配置简单,低廉学习成本,能很好作为Mysql中间层:

# 1. 键值存储:  Redis<6379>  Memcached<11211>,因为相比其他数据存储没有数据结构,又工作在内存中,所以性能很高.
# 2. 列式存储:  HBase:
# 3. 文档存储:  Documentation ,  MongoDB<27017>

分布式数据库: 通过分片机制进行数据分布,每个节点都能接收客户端请求<去中心化>,并且持有全局元数据的一部分数据.

# Hadoop(HDFS):  适用于大文件存储,Apache公司的产品,java程序编写
# FastDFS(开源软件): 适用于小文件存储(网盘,短视频,images),对于高并发有很好的支持.

E-R模型

# 当前物理的数据库都是按照E-R模型进行设计的

# E表示entry,实体
# R表示relationship,关系
# 一个实体转换为数据库中的一个表
# 关系描述两个实体之间的对应规则(关系),包括

一对一

角色表中的一条数据 对应 员工表中 的一条员工的数据

roles角色表

id

role

1

ceo

staffs员工表

id

name

role_id

1

雷军

1

一对多

一个班级表的一条数据可以对应学生表中多条数据

id

class

1

高三一班

2

高三二班

id

name

class_id

1

youmen

1

2

alice

2

3

flying

2

多对一

一个老师可以教授多个班级,一个班级可以有多个老师。

此时,就需要三个表

# 1. 老师表
# 2. 班级表
# 3. 用来表示他们关系的表

这个第三张表就是多对多关系需要的表

teacher表

id

name

1

晗哥

2

西瓜甜

class表

id

name

1

云计算1810

2

云计算1809

3

云计算1808

teacher2class表

id

teacher_id

class_id

1

1

1

2

1

3

3

2

1

4

2

2

关系点表示被转换为数据库表中的一个列 ,在关系型数据库中一行就是一个对象

RDBMS

RDBMS 指的是关系型数据库管理系统。 RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 微软的 SQL Server和 Microsoft Access, IBM DB2, 甲骨文的Oracle以及开源的 MySQL和PostgreSQL(读作:post - gress - Q - L, 简略念为"postgres") 。 RDBMS 中的数据存储在被称为表(tables)的数据库对象中。 表是相关的数据项的集合,它由列和行组成。

Mysql5.7主要特性

# 更好的性能:对于多核CPU、固态硬盘、锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是吾等用户更关心的
# 更好的InnoDB存储引擎
# 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。此外,GTID在线平滑升级也变得可能
# 更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的难题
# 原生JSON类型的支持
# 更好的地理信息服务支持:InnoDB原生支持地理位置类型,支持GeoJSON,GeoHash特性
# 新增sys库:以后这会是DBA访问最频繁的库
QPS

Queries Per Second意思是每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

SQL介绍

# SQL语言主要用于存取数据,查询数据,更新数据和管理关系数据库系统,由IBM开发,分为四种类型
# DDL语句        数据库定义语言(Create,Alter,Drop,Declare)  
# 用于定义或改变表的结构,数据类型,表之间的连接和约束等初始化工作上,他们大多在建表时使用.

# DML语句       数据库操作语言(Select,Delete,Update,Insert)    # 用来对数据库里的数据进行操作的语言.

# DCL语句        数据库控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)  
# 用来设置或更改数据库或角色权限的语句,只有sysadmin,dbcreator,db_owner等人员才能执行.

# DQL语句        数据库查询语言(select)

字符集

查看目前mysql所支持的所有字符集
SHOW CHARACTER SET;
SHOW CHARACTER SET LIKE 'latin%';
查看默认字符集
show variables like 'collation_%';

show variables like 'character_set_%';

# 查看具体某个数据库的字符集
use db_name
SELECT @@character_set_database, @@collation_database;
# 或者
use db_name
status
配置文件设置字符集
[client]
# 其他客户端,比如 pymysql
default-character-set=utf8
[mysql]
# mysql 客户端
default-character-set=utf8
[mysqld]
# 服务器端的字符集
character-set-server = utf8

# 服务器端的排序规则
collation-server = utf8_unicode_ci
排序规则

给定的字符集始终至少有一个排序规则,大多数字符集都有几个排序规则。 该SHOW COLLATION 语句显示所有可用的排序规则。 同样支持 LIKEWHERE 子句

SHOW COLLATION WHERE Charset = 'latin1';

每个字符集都有一个默认排序规则latin1utf8 分别是 latin1_swedish_ciutf8_general_ci

后缀含义

后缀

含义

_ci

不区分大小写

_cs

区分大小写

如果仅指定字符集(例如 latin1)但不指定排序规则,则与说明相同。 要查看适用于当前会话的字符集和排序规则系统变量的值,请使用以下语句:

mysql> SELECT * FROM performance_schema.session_variables
WHERE VARIABLE_NAME IN (
'character_set_client', 'character_set_connection',
'character_set_results', 'collation_connection'
) ORDER BY VARIABLE_NAME;

MysqlRPM安装

#!/usr/bin/env bash
# Author: ZhouJian
# Mail: 18621048481@163.com
# Time: 2019-9-3
# Describe: CentOS 7 Install Mysql.rpm Script
clear
echo -ne "\033[0;33m"
cat<<EOT
                                  _oo0oo_
                                 088888880
                                 88" . "88
                                 (| -_- |)
                                  0\ = /0
                               ___/'---'\___
                             .' \\\\|     |// '.
                            / \\\\|||  :  |||// \\
                           /_ ||||| -:- |||||- \\
                          |   | \\\\\\  -  /// |   |
                          | \_|  ''\---/''  |_/ |
                          \  .-\__  '-'  __/-.  /
                        ___'. .'  /--.--\  '. .'___
                     ."" '<  '.___\_<|>_/___.' >'  "".
                    | | : '-  \'.;'\ _ /';.'/ - ' : | |
                    \  \ '_.   \_ __\ /__ _/   .-' /  /
                ====='-.____'.___ \_____/___.-'____.-'=====
                                  '=---='
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                建议系统                    CentOS7
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# PS:请尽量使用纯净的CentOS7系统,我们会在服务器安装Mysql5.7,
# 将mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar包和脚本放到root目录下执行即可,密码为ZHOUjian.20
EOT
echo -ne "\033[m"
init_security() {
systemctl stop firewalld
systemctl disable firewalld &>/dev/null
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/'  /etc/selinux/config
sed -i '/^GSSAPIAu/ s/yes/no/' /etc/ssh/sshd_config
sed -i '/^#UseDNS/ {s/^#//;s/yes/no/}' /etc/ssh/sshd_config
systemctl enable sshd crond &> /dev/null
echo -e "33[32m [安全配置] ==> OK 33[0m"
}
init_yumsource() {
if [ ! -d /etc/yum.repos.d/backup ];then
    mkdir /etc/yum.repos.d/backup
fi
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup 2>/dev/null

if ! ping -c2 www.baidu.com &>/dev/null    
then
    echo "您无法上外网,不能配置yum源"
    exit    
fi
curl -o /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
timedatectl set-timezone Asia/Shanghai
echo "nameserver 114.114.114.114" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
chattr +i /etc/resolv.conf


echo -e "33[32m [YUM Source] ==> OK 33[0m"
}
init_mysql() {
rpm -e mariadb-libs --nodeps
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
tar xvf /root/mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /usr/local/
cd /usr/local
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm 
mysql-community-client-5.7.23-1.el7.x86_64.rpm 
mysql-community-common-5.7.23-1.el7.x86_64.rpm 
mysql-community-libs-5.7.23-1.el7.x86_64.rpm 
rm -rf mysql-community-* 
}
changepass() {
sed -i '/[mysqld]/ a skip-grant-tables' /etc/my.cnf
systemctl restart mysqld
mysql <<EOF
        update mysql.user set authentication_string='' where user='root' and Host='localhost';
        flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
systemctl restart mysqld
yum -y install expect 

expect <<-EOF
spawn  mysqladmin -uroot -p password "ZHOUjian.20"
        expect {
                "password" { send "r"  }
}
        expect eof
EOF
systemctl restart mysqld
}
main() {
init_hostname
init_security
init_yumsource
init_mysql
changepass
}
main

修改Mysql密码

# 修改Mysql密码下面有三种办法
# 1.刚安装好的mysql,可以从/var/log/mysqld.log获取临时密码
grep  "password"  /var/log/mysqld.log   
        [root@mysql ~]# mysql -uroot -p
    Enter password:
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ZHOUjian.22';

# 2.mysqladmin -uroot -p password "Baidu.123.com"
    Enter password:

# 3.实验环境不知道root密码操作方法如下
sed -i '/[mysqld]/ a skip-grant-tables' /etc/my.cnf
systemctl restart mysqld
mysql <<EOF
        update mysql.user set authentication_string='' where user='root' and Host='localhost';
        flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
systemctl restart mysqld
mysqladmin -uroot -p password "ZHOUjian.20"
Enter password:              # 此处回车一下即可

# 4.mariadb修改密码  
use mysql  
UPDATE user SET password=password('ZHOUjian.20') WHERE user='root';  
MariaDB [mysql]> flush privileges;

# 如果嫌登陆Mysql输入密码麻烦,可以使用以下办法,只需要mysql就可以进入数据库
vim /etc/my.cnf
[client]
password=admin
user=root
systemctl restart mysqld Or mariadb
修改用户密码

ALTER USER

# 基本使用
ALTER USER shark@'localhost' IDENTIFIED BY '123456';

# 修改当前登录用户
ALTER USER USER() IDENTIFIED BY '123456';


# 使密码过期
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE;

# 使密码从不过期
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;


# 按默认设置过期时间
ALTER USER shark@'localhost'  IDENTIFIED BY '123456' PASSWORD EXPIRE DEFAULT;

# 指定过期间隔
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE INTERVAL 90 DAY;
Mysql8.0修改密码
# 1. 需要先创建新的用户

CREATE USER '你的用户名'@'localhost' IDENTIFIED BY '你的密码';

# 2. 把刚刚创建的数据库的管理权限给予刚刚创建的MySQL用户
GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的用户名'@'localhost';

# 3. 最后别忘了刷新权限,使用设置及时生效
FLUSH PRIVILEGES;

Mysql.tar包方式安装安装

# 安装源码Mysql
#!/usr/bin/env bash
# Author: ZhouJian
# Mail: 18621048481@163.com
# Time: 2019-9-3
# Describe: CentOS 7 Install Mysql.tar Script    # 此处为编译好的tar包,具体编译有时间再亲测一遍
Deplay(){
rpm -e mariadb-libs --nodeps
setenforce 0
systemctl stop firewalld
systemctl enable firewalld
sed -i '/^SELINUX=/ s/enforcing/disabled' /etc/ssh/sshd_config
sed -i '/^GSSAPIAu/ s/yes/no/' /etc/ssh/sshd_config
sed -i '/^#UseDNS/ {s/^#//;s/yes/no}' /etc/ssh/sshd_config

id mysql > /dev/null
if [ $? -eq 0 ];then
echo "mysql user exist"
else
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
fi
if [ ! -d /usr/local/mysqld ];then
	tar xf mysql-5.7.26-bin.tar.xz -C /usr/local/
	chown mysql.mysql /usr/local/mysqld/ -R
fi
echo "export PATH=$PATH:/usr/local/mysqld/mysql/bin" >> /etc/profile
source /etc/profile
cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysqld/mysql
datadir = /usr/local/mysqld/data
tmpdir = /usr/local/mysqld/tmp
socket = /usr/local/mysqld/tmp/mysql.sock
pid_file = /usr/local/mysqld/tmp/mysqld.pid
log_error = /usr/local/mysqld/log/mysql_error.log
slow_query_log_file = /usr/local/mysqld/log/slow_warn.log
user = mysql
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8
default_storage_engine = InnoDB
EOF

ln -s /usr/local/mysqld/mysql/support-files/mysql.server /usr/bin/mysqldctl
mysqldctl start
	ln -s /usr/local/mysqld/tmp/mysql.sock /tmp/mysql.sock
mysqldctl restart
sed -i '/[mysqld]/ a skip-grant-tables' /etc/my.cnf
mysqldctl restart
mysql <<EOF
	update mysql.user set authentication_string='' where user='root' and Host='localhost';
flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
mysqldctl restart
yum -y install expect 
expect <<-EOF
spawn mysqladmin -uroot -p password "ZHOUjian.20"
expect {
"password" { send "r" }
}
expect eof
EOF
	mysqldctl restart
}
Deplay

YUM部署Mysql

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum -y localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-community-server -y
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ZHOUjian.22';

grant all privileges on *.* to admin@"%" identified by 'ZHOUjian.21' withth grant option;

# 授权test用户有testdb数据库某一部分权限
grant select,update on testDB.* to test@'%' identified by 'ZHOUjian.22';

# 授权test用户拥有所有数据库所有权限
grant all on *.* to 'test'@'%' identified by 'ZHOUjian.22';
flush privileges;

Mysql源码部署

卸载Mysql冲突包并安装依赖包
rpm -e --nodeps mariadb-libs
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel

# cmake:
#    由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。   

# Boost:
#     从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本, 这个选择源码安装

# GCC:
#     是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC    

# bison:
#     Linux 下 C/C++语法分析器    

# ncurses:
#     字符终端处理库
下载源码
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz
  
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
创建目录用户
useradd -M -s /sbin/nologin mysql
# -M  不创建用户的家目录
# -s  指定一个不能登录的 shell

# 创建安装目录并授权
mkdir -p /mysql/data
chown -R   mysql:mysql   /usr/local/mysql
chown -R   mysql.mysql   /mysql/data
chmod 750  /mysql/data
解压和预编译
tar xzf boost_1_59_0.tar.gz
tar xzf mysql-5.7.25.tar.gz

cd mysql-5.7.25

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_DATADIR=/mysql/data 
-DWITH_BOOST=../boost_1_59_0 
-DSYSCONFDIR=/etc 
-DENABLED_LOCAL_INFILE=1 
-DENABLE_DTRACE=0 
-DDEFAULT_CHARSET=utf8mb4 
-DDEFAULT_COLLATION=utf8mb4_general_ci 
-DWITH_EMBEDDED_SERVER=1

# 编译安装
make -j  $(grep processor /proc/cpuinfo | wc -l)
make install
添加环境变量
echo -e 'nnexport PATH=/usr/local/mysql/bin:$PATHn' >> /etc/profile && source /etc/profile
添加Mysql服务到systemd
cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld

# 授予可执行的权限
chmod +x /etc/init.d/mysqld

# 设置开机自启动
systemctl enable mysqld
修改配置文件
cat /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/mysql/data
port=3306
server_id=111
socket=/tmp/mysql.sock


# 下面的只是配置文件解释
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
################ basic settings ################
bind-address = 0.0.0.0
pid-file = /var/run/mysql.pid
user = mysql

character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 如果是 OFF 或(0),mysqld 在检查客户端连接时解析主机名。
# 如果是 ON 或(1),mysqld只使用 IP; 
skip_name_resolve = 1

max_allowed_packet = 16777216

# 允许的最大同时客户端连接数。默认情况下,这是151
max_connections = 2000

# 运行错误连接后尝试的次数,默认 100
max_connect_errors = 1000
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728

# 交互式客户端连接后,没有任何操作的情况下,继续保持连接状态的秒数
interactive_timeout = 1800

# 服务器在关闭之前等待非交互式连接上的活动的秒数。
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
key_buffer_size = 256M
transaction_isolation = READ-COMMITTED

############ log settings ############
log_error=/tmp/mysqld.log
expire_logs_days = 30
slow_query_log = 1
long_query_time = 2

# 在写入慢查询日志的语句中包含慢速管理语句
log_slow_admin_statements = 1

# 检查少于此行数的查询结果不会记录到慢查询日志中。
min_examined_row_limit = 100

########### innodb settings ##########
innodb_buffer_pool_size = 1G
innodb_sort_buffer_size = 27108864
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lock_wait_timeout = 5
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_thread_concurrency = 8
innodb_flush_neighbors = 1
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_file_per_table = ON
innodb_log_file_size = 500M
innodb_log_buffer_size = 20M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit=2
初始化数据库
mysqld  --initialize  --user=mysql

--initialize-insecur   
# 使用空密码。你应该在生产中及时修改密码。
# 或者使用  --initialize  
# 这样的话,会为root用户生成一个随机的密码。这个随机密码可能会被输出到初始化过程中,也有可能输出到错误日志中。
初始化服务
systemctl  start  mysql

# 因为使用了--initialize,所以如果登录不知道密码可以查看服务器日志
mysql -u root -p
# 如果找不到密码,可以强制修改
sed -i '/[mysqld]/ a skip-grant-tables' /etc/my.cnf
systemctl restart mysqld
mysql <<EOF
        update mysql.user set authentication_string='' where user='root' and Host='localhost';
        flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
systemctl restart mysqld
mysqladmin -uroot -p password "ZHOUjian.20"
Enter password:              # 此处回车一下即可

# 使用ALTER语句修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

# 登录数据库
mysql -uroot -skip-password

# 使用ALTER语句修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
授权root用户才能本地访问数据库
# 登录到 `mysql` 数据库,执行如下语句进行授权。

CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';

# 上面的这两条语句也可以放在一个普通文件中,初始化的时候使用 `--init-file` 选项来完成。
# 例如: `--init-file=/path/mysql-init.txt`
将Mysql动态链接库共享至系统链接库
#一般MySQL数据库还会被类似于PHP等服务调用,所以我们需要将MySQL编译后的lib库文件添加至当
# 前Linux主机链接库/etc/ld.so.conf.d/ 下,这样MySQL服务就可以被其它服务调用了。

# ldconfig -v|grep mysql
# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
# ldconfig -v |grep mysql
ldconfig: 无法对 /libx32 进行 stat 操作: 没有那个文件或目录
ldconfig: 多次给出路径“/usr/lib”
ldconfig: 多次给出路径“/usr/lib64”
ldconfig: 无法对 /usr/libx32 进行 stat 操作: 没有那个文件或目录
/usr/local/mysql/lib:
	libmysqlclient.so.20 -> libmysqlclient.so.20.3.10