MySQL 组成
客户端程序:
- mysql: 交互式的CLI工具
- mysqladmin:基于mysql协议管理mysqld
- mysqlimport:数据导入工具
- MyISAM:存储引擎的管理工具
- myisamchk:检查MyISAM库
- myisampack:打包MyISAM表,只读
服务器端程序:
- mysqld_safe
- mysqld
- mysqld_multi 多实例
方法一:编译安装
以编译安装5.6版本为例。
先将安装包传到/opt/目录下。
1. #安装环境依赖包
[root@yuji ~]# yum -y install gcc gcc-c++ make ncurses ncurses-devel bison cmake libaio-devel
#各程序作用解释如下:
gcc #C语言的编译器
gcc-c++ #C++的编译器
ncurses #字符终端下图形互动功能的动态库
ncurses-devel #ncurses开发包
bison #语法分析器
cmake #mysql需要用cmake编译安装
libaio-devel #支持同步I/O的软件包
2. #创建mysql用户并加入到mysql组,创建mysql的安装路径
[root@yuji ~]# useradd -s /sbin/nologin mysql
[root@yuji ~]# mkdir -p /usr/local/mysql
3. #解压mysql安装包,配置软件模块
[root@yuji ~]# cd /opt/
[root@yuji opt]# tar zxf mysql-5.6.36.tar.gz
[root@yuji opt]# cd mysql-5.6.36/
###配置软件模块,cmake自定义配置###
[root@yuji mysql-5.6.36]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \ #扩展性的字符集,支持其他字符集编码
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #开启各种功能的存储引擎机
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装INNOBASE存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \ #安装MEMORY存储引擎
-DWITH_READLINE=1 \ #支持readline程序平台,读取数据按行读取,一行是一个对象
-DENABLED_LOCAL_INFILE=1 \ #本地写入文件,方便导入导出
-DMYSQL_DATADIR=/home/mysql \ #指定数据库的家目录,数据库文件的存储路径
-DMYSQL_USER=mysql \ #指定管理用户
-DMYSQL_TCP_PORT=3306 #指定端口号
4. #编译安装
[root@yuji mysql-5.6.36]# make && make install -j2 #开2核编译安装
——————如果报错,需要清空缓存文件后重新编译-------
find -name CMakeCache.txt
rm -f ./CMakeCache.txt
-------------------------------------------
5. #将配置文件拷贝到/etc/目录下,并改名为my.cnf
[root@yuji mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
6.#添加mysqld系统服务,将mysql添加进系统服务管理中
[root@yuji mysql-5.6.36]# cp support-files/mysql.server /etc/init.d/mysqld
[root@yuji mysql-5.6.36]# chmod 755 /etc/init.d/mysqld
[root@yuji mysql-5.6.36]# chkconfig --add /etc/init.d/mysqld
[root@yuji mysql-5.6.36]# chkconfig mysqld --level 35 on #在3和5运行级别下启动
7. #设置环境变量,申明/宣告mysql命令,便于系统识别
[root@yuji mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@yuji mysql-5.6.36]# source /etc/profile //刷新文件,使立即生效
[root@yuji mysql-5.6.36]# echo $PATH
8. #更改mysql安装目录和配置文件的属主属组
[root@yuji mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql/
[root@yuji mysql-5.6.36]# chown mysql:mysql /etc/my.cnf
9. #初始化初始化数据库
[root@yuji mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \ #指定管理用户
--ldata=/var/lib/mysql \ #与--datadir同义
--basedir=/usr/local/mysql \ #指定数据库的安装目录
--datadir=/home/mysql #指定数据库文件的存储路径
10. #修改系统服务的脚本文件
[root@yuji mysql-5.6.36]# ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock //做一个软链接
[root@yuji mysql-5.6.36]# vim /etc/init.d/mysqld //修改脚本文件
##修改46,47行
basedir=/usr/local/mysql
datadir=/home/mysql
11. #启动mysql
[root@yuji mysql-5.6.36]# service mysqld start
[root@yuji mysql-5.6.36]# ss -ntap|grep "3306"
12. #登录及登出mysql
[root@yuji mysql-5.6.36]# mysql #登录mysql
##授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限。
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#登出mysql
mysql> exit
Bye
复制代码
方法二:yum安装
以安装5.7版本为例。
1. #创建mysql安装包的在线源
cd /etc/yum.repos.d/
vim mysql.repo
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
2. #安装服务mysql-community-server
yum -y install mysql-community-server
3. #启动服务
systemctl start mysqld
ss -ntap |grep 3306
4. #此时无法使用mysql命令直接登入数据库。需要查看本地root用户的默认密码,使用密码登录。
grep password /var/log/mysqld.log #查看默认密码
mysql -u root -p'34/Jeoiq0fZb' #使用密码登录,特殊符号用单引号引起来
5. #登入数据库后必须修改密码。
mysql> alter user root@'localhost' identified by 'Yuji18@2022';
#为保证安全,密码的复杂性要足够,需要包含英文字母大小写、数字和特殊字符。
#可以使用"\h;"查看帮助
复制代码
降低mysql密码复杂度的方法
# 进入数据库
mysql -u root -p
# 验证密码混合情况计数
set global validate_password_mixed_case_count=0;
# 全局验证密码中数字的数量
set global validate_password_number_count=3;
# 全局验证密码中特殊字符计数
set global validate_password_special_char_count=0;
#全局验证密码长度
set global validate_password_length=3;
MySQL数据库自动补全命令的三种方式
方式一:临时使用自动补全功能
mysql -u root -p --auto-rehash
方式二:永久使用自动补全功能
vi /etc/my.cnf
[mysql]
auto-rehash
方式三:使用软件mycli实现自动补全功能
yum -y install epel-release
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
mkdir ~/.pip/
cat > ~/.pip/pip.conf <<EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
yum -y install libffi-devel zlib* python-devel openssl-devel
tar -zxvf Python-3.9.0.tgz
cd Python-3.9.0/
./configure --prefix=/usr/local/python --with-ssl
make && make install
ln -s /usr/local/python/bin/python3 /usr/bin/
echo 'export PATH=/usr/local/python/bin:$PATH' >> /etc/profile
source /etc/profile
pip3 install mycli
mycli -u root -p <密码>