当前位置:首页>Linux>Linux系统安装配置MySQL

Linux系统安装配置MySQL

  • 2026-10-11 06:00:08
Linux系统安装配置MySQL

1. Yum下载安装MySQL依赖包:ncurses、ncurses-devel、bison、cmake

yum-y install ncurses  ncurses-devel  bison  cmake

    • Ncurses:是字符终端下屏幕控制的基本库
    • Bison:用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。
    • CMake:是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。

2. 创建一个不可登录的用户mysql:

(用于管理程序,主要是提升系统安全性。系统账号的shell使用 /sbin/nologin ,此时无法登录系统,即使给了密码也不行)

useradd -s /sbin/nologin  mysql

查看是否创建成功:

cat /etc/passwd |cut -f 1 -d :

3. 移动MySQL安装包至服务器

4. 解压缩MySQL到当前目录--家目录

tar xf mysql-boost-5.7.20.tar.gz

查看解压是否成功:ls -lh

5. 移动到mysql目录下,调用此目录文件:cd mysql-5.7.20/

6. 配置mysql文件:

cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   #安装目录-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   #指定套接字文件的存储路径-DSYSCONFDIR=/etc \  #配置my.cnf的目录-DSYSTEMD_PID_DIR=/usr/local/mysql \  #主服务进程所在路径-DDEFAULT_CHARSET=utf8  \  #默认字符集-DDEFAULT_COLLATION=utf8_general_ci \  #默认编码-DWITH_INNOBASE_STORAGE_ENGINE=1 \  #启用InnoDB引擎-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #启用ARCHIVE引擎-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #启用BLACKHOLE引擎-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #启用perfschema引擎存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术	的实现方法。-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据存储路径-DWITH_BOOST=boost \ #boost库是为C++语言标准库提供扩展的一些C++程序库的总	称-DWITH_SYSTEMD=1	 #-DWITH_SYSTEMD=1 这是MySQL 5.7原生支持Systemd的选项,	如果要是用systemctl启动,就必须开启。

7. 写入成功,后进行编译和安装:make && make install

等待完成......

8. 更改usr/local/masql的属主、属组:

(1)在/usr/local/中查看是否有mysql目录,及其属主、属组

(2) 修改属主、属组:chown -R mysql:mysql /usr/local/mysql/

Mysql目录下的文件属主、属组同样更改了

9. 修改mysql配置文件:vi /etc/my.cnf

重建配置:

[client]																	//普通用户端口号port = 3306default-character-set=utf8								//默认字符集socket = /usr/local/mysql/mysql.sock			//指定套接字文件的存储路径[mysql]port = 3306default-character-set=utf8socket = /usr/local/mysql/mysql.sock[mysqld]																	//服务user = mysqlbasedir = /usr/local/mysqldatadir = /usr/local/mysql/dataport = 3306character_set_server=utf8pid-file = /usr/local/mysql/mysqld.pid		//进程文件socket = /usr/local/mysql/mysql.sockserver-id = 1//每个数据库的id必须不一样sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
    • NO_ENGINE_SUBSTITUTION:在开启该MODE的情况下,在创建表时,如果指定的存储引擎不 存在或不支持,则会直接提示“ERROR”。
    • STRICT_TRANS_TABLES:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
    • NO_AUTO_CREATE_USER:MODE禁止的只是不带“identified by”子句的grant语句,对于带有“identified by”子句的grant语句,其并不会禁止。
    • NO_AUTO_VALUE_ON_ZERO:该值影响自增长列的插入。默认情况下,在对自增主键插入NULL或0时,会自动生成下一个值。若开启该MODE,当插入0时,并不会自动生成下一个值。
    • NO_ZERO_IN_DATE:NO_ZERO_IN_DATE针对的是年不为0。
    • NO_ZERO_DATE:该MODE会影响'0000-00-00'的插入。实际效果还取决于是否开启严格模式。在开启严格模式,且同时开启该MODE,是不允许'0000-00-00'插入的。
    • ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL。
    • PIPES_AS_CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似。
    • ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。

保存退出:【:wq】

10. 给配置文件更改属主、属组:

chown mysql:mysql /etc/my.cnf

11. 配置完成设置环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile

echo 'export PATH' >> /etc/profile

完成后:vi /etc/profile,转到最下面查看是否配置进了变量

使环境变量生效:【source /etc/profile】

12. mysql初始化(初始化前保证服务没运行过,data目录为空,否则无法完成初始化)

cd /usr/local/mysql/bin/s

mysqld \--initialize-insecure \  使用--initialize生成随机密码,使用--initialize-insecure生成空密码--user=mysql \  #指定运行账户为mysql,默认为root--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/data

13. 加载mysql服务文件mysqld.service至/usr/lib/systemd/system/:

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/#拷贝

systemctl daemon-reload#守护进程重新加载

14. 启动mysql:systemctl start mysqld

查看mysql状态:systemctl status mysqld

查看mysql端口号:netstat -anpt | grep 3306

到/usr/local/mysql/可看到新生成的data目录:

15. 尝试连接mysql

16. 给root账号设置密码:

mysqladmin -u root -p password 'abc123'

测试密码是否设置成功

登录mysql -u root -p

PS:

清除yum缓存:yum clean all(如果清除缓存

出现进程占用问题,按ctrl C,会打出(^C)终止进程,然后输入“kill -9 进程编码”命令,关闭进程后再清除yum缓存)

创建yum缓存:yum makecache(更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存)

给数据库root用户授权,允许root用户从任意地址登录上数据库

mysql>GRANT all privileges ON 库名.表名 TO 'root'@'%' IDENTIFIED BY 'abc123';

所有库/表,用*表示

FLUSH PRIVILEGES;刷新

最新文章

随机文章