《数据库 MySQL》第1章 Linux下MYSQL安装

笔者这篇博文花了多几天的时间,在CSDN上编辑花了好长时间,其实我本不想发表在CSDN上的,内容其实很贱单,但为了帮助朋友们安装MYSQL以及工程中遇到的问题,于是记录于此,如果大家觉得要用处,请留下您宝贵的小星星吧!,以此鼓励笔者写更多博文!谢谢大家的支持!

开发环境:
主机:Ubuntu14.04 centoOS6.8、
MySQL:MySQL 5.5、5.6、5.7

1.1 Ubuntu安装MySQL

1.1.1 apt-get安装

1.安装MySQL

在 Ubuntu 14.04 中,默认情况下,只有最新版本的 MySQL 包含在 APT 软件包存储库中,要安装它,只需更新服务器上的包索引并安装默认包 apt-get。

$sudo apt-get update
$sudo apt-get install mysql-server

安装过程会提示输入密码。输入密码后单击ok即可。

$sudo apt-get install mysql-client

在这里插入图片描述
2.配置MySQL

 安装配置

$sudo mysql_secure_installation
ouxiaolong@ubuntu:~$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n【我的选择】
 ... skipping.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] n【我的选择】
 ... skipping.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y【我的选择】
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] n【我的选择】
 ... skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y【我的选择】
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

在这里插入图片描述

 检查mysql服务状态

安装完成之后可以使用如下命令来检查是否安装成功:

$sudo netstat -tap | grep mysql

在这里插入图片描述

通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。

3.登陆mysql数据库

 主机上登陆

登陆可以通过如下命令:

$mysql -u root -p 

【注】表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。

在这里插入图片描述

 设置mysql允许远程访问

1.编辑文件 /etc/mysql/my.cnf

$sudo  vim  /etc/mysql/my.cnf

注释掉bind-address = 127.0.0.1:

在这里插入图片描述

2.登录到mysql中,为root进行远程访问的授权,执行下面的命令:
mysql> GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY “你的密码”;
mysql> flush privileges;

在这里插入图片描述
第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
GRANT ALL PRIVILEGES ON . TO root@“172.168.193.25” IDENTIFIED BY “你的密码”;
第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
查看授权的用户。
SELECT DISTINCT CONCAT(‘User: ‘’’,user,’’’@’’’,host,’’’;’) AS query FROM mysql.user;

在这里插入图片描述
3.重新启动(命令如下):

$sudo /etc/init.d/mysql stop
$sudo /etc/init.d/mysql start

在这里插入图片描述
4.查看端口号
show global variables like ‘port’;

在这里插入图片描述
5.检查mysql进程是否运行
ps -ef | grep mysql

在这里插入图片描述
6.登陆
使用Navicat for MySQL远程连接。也可使用workbench工具。

在这里插入图片描述

图1

在这里插入图片描述

图2

【注】笔者用的是Navicat for MySQL远程登录的,关于Navicat for MySQL 安装和破解请参考博文:https://blog.csdn.net/u013162035/article/details/89424962
还可以及使用Navicat Premium 12安装和破解:
https://blog.csdn.net/u013162035/article/details/89456708

 主机上退出

mysql退出三种方法:
mysql > exit
在这里插入图片描述
mysql > quit
在这里插入图片描述
mysql > \q
在这里插入图片描述

4.测试
然后通过 show databases; 就可以查看当前的数据库。我们选择 mysql数据库就行下一步操作,使用use mysql 命令,显示当前数据库的表单:show tables;
在这里插入图片描述
在这里插入图片描述

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main() 
{
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char server[] = "localhost";
    char user[] = "root";
    char password[] = "9";
    char database[] = "mysql";
    
    conn = mysql_init(NULL);
    
    if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)) 
    {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    
    if (mysql_query(conn, "show tables")) 
    {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    
    res = mysql_use_result(conn);
    
    printf("MySQL Tables in mysql database:\n");
    
    while ((row = mysql_fetch_row(res)) != NULL)
    {
        printf("%s \n", row[0]);
    }
    
    mysql_free_result(res);
    mysql_close(conn);
    
    printf("finish! \n");
    return 0;
}

编译代码的时候需要链接mysql的库,可以通过如下方式编译:

$gcc -I/usr/include/mysql mysql_test.c -L/usr/lib/mysql -lmysqlclient -o mysql_test

【注:编译错误解决】
在Ubuntu系统中,然而使用C语言访问mysql数据库时,却发现出现了如下错误:
fatal error: mysql.h: No such file or directory
在这里插入图片描述
出现这个错误是因为系统没有安装mysql安装包 sudo apt-get install libmysql+±dev即可编译时需要加连接-lmysqlclient。

编译后执行程序。
ouxiaolong@ubuntu:~$ ./mysql_test

MySQL Tables in mysql database:
columns_priv 
db 
event 
func 
general_log 
help_category 
help_keyword 
help_relation 
help_topic 
host 
ndb_binlog_index 
plugin 
proc 
procs_priv 
proxies_priv 
servers 
slow_log 
tables_priv 
time_zone 
time_zone_leap_second 
time_zone_name 
time_zone_transition 
time_zone_transition_type 
user 
finish!

可见结果和使用SQL语句 show tables 是一样的。

5.MySQL查看版本号
1)命令行模式登录MySQL

$ mysql –u root -p

在这里插入图片描述
2)命令行下使用:status
mysql> status
在这里插入图片描述
3)使用系统函数:version()
mysql> select version();
在这里插入图片描述
4)mysql --version
mysql --version
或者mysql --help | grep Distrib

在这里插入图片描述
5)包管理工具(根据不同系统 rh系列或bsd系列)
rpm -qa|grep mysql
【注】一般是centoOS系统。

【注】Ubuntu安装MySQL的方式有很多,可以使用源码编译的方式安装,本文中安装方式是最简单的,笔者在这里就不在赘述了。

1.1.2编译安装

版本:5.6.42

1.下载软件

地址:https://www.mysql.com/downloads/
选择community server

在这里插入图片描述

图3

点击DOWLOAD
【注】笔者选择的是5.6的版本,最新的是8.0的版本。

在这里插入图片描述

图4

在这里插入图片描述

图5
2.卸载旧版本

使用下面的命令检查是否安装有MySQL Server

sudo rpm -qa |grep mysql

有的话通过下面的命令来卸载掉,目前我们查询到的是有的,接下来解删除它吧。

$sudo rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64    // 强力删除模式,该命令可以对其进行强力删除

再检查一下,确定没有mysql了。

3.安装MySQL

安装编译代码需要的包

sudo apt-get install g++ cmake bison ncurses-dev bison 

解压:

$tar -zxvf mysql-5.6.42.tar.gz

进入解压目录:

$cd ./mysql-5.6.42

在这里插入图片描述
编译安装:

$cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 

在这里插入图片描述
表示配置完成,接下来就是编译并安装:

$sudo make && make install

在这里插入图片描述
【注】注意安装需要超级用户。
表示编译完成,整个过程需要30分钟左右……漫长的等待。

【5.7版本】编译错误:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=解决办法是:
解决方案:
1.在/usr/local下创建一个名为boost的文件夹

$sudo mkdir -p /usr/local/boost

2.进入这个新创建的文件夹然后下载boost

$wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

3.解压

$sudo tar -xvzf boost_1_59_0.tar.gz

4.继续cmake,添加上红色内容

$sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost
4.配置MySQL

【注】笔者一下用的root权限

 设置权限

使用下面的命令查看是否有mysql用户及用户组

#cat /etc/passwd 查看用户列表
#cat /etc/group  查看用户组列表

如果没有就创建

# groupadd mysql
# useradd -g mysql mysql

修改/usr/local/mysql权限

#chown -R mysql:mysql /usr/local/mysql

 初始化配置
进入安装路径(在执行下面的指令),执行初始化配置脚本,创建系统自带的数据库和表。

#cd /usr/local/mysql
# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是/usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
注意:在CentOS6.8版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
修改名称,防止干扰:

#mv /etc/my.cnf /etc/my.cnf.bak

在这里插入图片描述
我的系统中没有,就忽略吧。继续进行下一步。

5.启动MySQL

添加服务,拷贝服务脚本到init.d目录,并设置开机启动
[注意在 /usr/local/mysql 下执行]
#cp support-files/mysql.server /etc/init.d/mysql
#service mysql start --启动MySQL

【注】停止服务:service mysqld stop

1.2 CentOS安装MySQL

1.2.1 编译安装

版本:5.6.42

1.下载软件

地址:https://www.mysql.com/downloads/
选择community server

在这里插入图片描述

图6

点击DOWLOAD
【注】笔者选择的是5.6的版本,最新的是8.0的版本。

在这里插入图片描述

图7

在这里插入图片描述

图8
2.卸载旧版本

使用下面的命令检查是否安装有MySQL Server

#rpm -qa |grep mysql

在这里插入图片描述
有的话通过下面的命令来卸载掉,目前我们查询到的是有的,接下来解删除它吧。

#rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64    // 强力删除模式,该命令可以对其进行强力删除

在这里插入图片描述
再检查一下,确定没有mysql了。

3.安装MySQL

安装编译代码需要的包

#yum -y install make gcc-c++ cmake bison-devel  ncurses-devel bison 

在这里插入图片描述
解压:

#tar -zxvf mysql-5.6.42.tar.gz

进入解压目录:

#cd ./mysql-5.6.42

在这里插入图片描述
编译安装:

#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 

在这里插入图片描述
表示配置完成,接下来就是编译并安装:

#make && make install

在这里插入图片描述
表示编译完成,整个过程需要30分钟左右……漫长的等待。

【5.7版本】编译错误:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=解决办法是:
解决方案:
1.在/usr/local下创建一个名为boost的文件夹

#mkdir -p /usr/local/boost

2.进入这个新创建的文件夹然后下载boost

#wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

3.解压

#tar -xvzf boost_1_59_0.tar.gz

4.继续cmake,添加上红色内容

#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost
4.配置MySQL

 设置权限
使用下面的命令查看是否有mysql用户及用户组

#cat /etc/passwd 查看用户列表
#cat /etc/group  查看用户组列表

如果没有就创建

#groupadd mysql
#useradd -g mysql mysql

修改/usr/local/mysql权限

#chown -R mysql:mysql /usr/local/mysql

 初始化配置
进入安装路径(在执行下面的指令),执行初始化配置脚本,创建系统自带的数据库和表。

#cd /usr/local/mysql
#scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是/usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
注意:在CentOS6.8版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
修改名称,防止干扰:

#mv /etc/my.cnf /etc/my.cnf.bak

在这里插入图片描述
我的系统中没有,就忽略吧。继续进行下一步。

5.启动MySQL

添加服务,拷贝服务脚本到init.d目录,并设置开机启动
[注意在 /usr/local/mysql 下执行]

#cp support-files/mysql.server /etc/init.d/mysql
#chkconfig mysql on
#service mysql start  --启动MySQL或者/etc/init.d/mysqld start

【注】停止服务:service mysqld stop或者/etc/init.d/mysqld stop

1.2.2免编译安装

版本:5.7.24

1.下载软件

地址:https://www.mysql.com/downloads/
选择community server

在这里插入图片描述

图9

点击DOWLOAD
【注】笔者选择的是5.7的版本,最新的是8.0的版本。

在这里插入图片描述

图10

在这里插入图片描述

图11
2.卸载旧版本

使用下面的命令检查是否安装有MySQL Server

#rpm -qa |grep mysql

有的话通过下面的命令来卸载掉,目前我们查询到的是有的,接下来解删除它吧。

#rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64    // 强力删除模式,该命令可以对其进行强力删除

再检查一下,确定没有mysql了。

3.安装MySQL

1>新建文件

#mkdir /usr/mysql/

2>解压并复制

#tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
#mv mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz/* /usr/local/mysql/

3>创建data目录

#mkdir /usr/local/mysql/data

4>创建mysql用户和修改权限

#groupadd mysql  
#chown -R mysql.mysql /usr/local/mysql/

5>初始化数据
#./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
在这里插入图片描述

6>mysql的服务脚本放到系统服务中

#cp -a ./support-files/mysql.server /etc/init.d/mysqld

7>启动mysql

#service mysqld start

在这里插入图片描述
【注】停止使用service mysqld stop或者/etc/init.d/mysqld stop

8>登录

#/usr/local/mysql/bin/mysql -u musql -p

登录失败问题及解决:
1.登陆失败,mysqladmin修改密码失败
#/usr/local/mysql/bin/mysqladmin -u root password ‘123456’
在这里插入图片描述
2.停止mysql服务

#/etc/init.d/mysqld stop

在这里插入图片描述
3.安全模式启动

# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

在这里插入图片描述
4.无密码root帐号登陆

# /usr/local/mysql/bin/mysql -uroot –p

在这里插入图片描述

【注】在下面的要求你输入密码的时候,你不用管,直接回车键一敲就过去了。
mysql> use mysql;
在这里插入图片描述
5.手动update修改密码
mysql> update user set password=password(“270139”) where user=‘root’ and host=‘localhost’;
mysql> flush privileges;
mysql> quit
6.正常重新启动

# service mysqld restart
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruceoxl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值