如何在linux上安装mysql

如何在linux上安装mysql,第1张

本文将以MySQL 5.0.51为例,以CentOS 5为平台,讲述MySQL数据库的安装和设置。MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家由MySQL开发人员创建的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。MySQL的官方发音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。)提供了关于MySQL和MySQL AB的最新的消息。有大量的MySQL软件可以使用。MySQL有两种安装方式:源码包安装和二进制包安装。这两种方式各有特色:二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便;源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化,选择最佳的配置值,安装定制更灵活。下面分别介绍这两种安装方式。下载最新稳定发行版的MySQL源码包。本文使用的是5.0.51版本,在linux系统下用下面的命令下载:命令执行结束后,当前工作目录下将生成一个新的子目录mysql-5.0.51,此目录下即为mysql的源码文件。CC:C编译器的名称(用于运行configure),本文示例为gccCFLAGS:C编译器的标志(用于运行configure),本文示例为-O3,指定优化级别为3CXX:C++编译器的名称(用于运行configure),本文示例为gcc--prefix:指定安装目录,本文示例为/usr/local/mysql--localstatedir:指定默认数据库文件保存目录,默认为安装目录下的var目录--with-client-ldflags:客户端链接参数,本文示例为指定静态编译mysql客户端--with-mysqld-ldflags:服务器端链接参数,本文示例为指定静态编译mysql服务器--with-charset:指定默认字符集。mysql默认使用latin1(cp1252)字符集,可以使用此选项更改。字符集可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。--with-collation:指定默认校对规则。mysql默认使用latin1_swedish_ci校对规则,可以使用此选项更改。--with-extra-charsets:服务器需要支持的字符集,有三种可能的值:空格间隔的一系列字符集名;complex ,包括不能动态装载的所有字符集;all,将所有字符集包括进二进制。本文示例为complex。注意:要想更改字符集和校对规则,要同时使用--with-charset和--with-collation选项。 校对规则必须是字符集的合法校对规则。(在mysql中使用SHOW COLLATION语句来确定每个字符集使用哪个校对规则)。源码方式安装需要手动复制配置文件,配置模板位于源码树的support-files目录,有my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf四个,选择跟你的环境相接近的一个复制到/etc目录,并做适当修改。关于mysql配置文件的详细信息请参阅笔者的其它文章或是mysql官方文档。本文示例选择my-medium.cnf,执行下面的命令将其复制到/etc目录:默认数据库文件保存目录为安装目录下的var目录,执行configure命令时可通过--localstatedir参数指定不同的目录,本文示例为默认位置。表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止。Mysql二进制包已经包含在CentOS 5的安装媒体中,可以直接从安装媒体中安装下面三个rpm包:不同的版本文件名有所不同,请注意区分。如果你安装的机器此时可以连接到互联网,笔者建议使用yum命令来简化安装过程:yum将自动从centos的镜像站点查找你指明的软件的最新二进制包,并检查软件包依赖关系,安装软件的同时自动安装其依赖的软件包。通过CentOS安装媒体或yum安装的二进制包版本会落后于mysql开发者网站发布的版本,可以从mysql网站下载安装最新稳定版本的mysql。下载最新稳定发行版的相应硬件平台的MySQL。本文使用的是Red Hat Enterprise Linux 5 RPM (x86) 5.0.45版本。需要下载Server、Client、Headers and Libraries、Share Libraries/Shared compatibility libraries几个rpm包,其它为可选包,按需要选择。源码包方式安装时通常是在3.1.4节中configure命令的--prefix选项指定的目录中建立如下的目录结构,特殊指定的目录除外:./share/mysql #mysql公用文件目录,包括字符集、配置文件模板、启动脚本、初始化SQL文件等/usr/lib64/mysql #如果为64系统,mysql 64位库文件目录Linux系统下,mysql的配置参数文件为my.cnf,一般按下面的顺序查找此文件:/etc目录、mysql安装目录、mysql数据目录。配置模板位于源码树的support-files目录,有my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf四个,关于mysql配置文件的详细信息请参阅笔者的其它文章或是mysql官方文档。mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。如果提示找不到mysql文件,请尝试使用绝对路径,如本文示例为:至此,Mysql基本安装完毕。希望本文能对初学者有所帮助。在安装mysql之前需要进行一些准备工作。首先要明确Linux中是否已经安装mysql服务,在不明确的情况下,可以执行以下命令进行确认。执行命令后的结果如下所示,表明mysql服务没有安装。如果检测到mysql服务没有安装,则需要准备安装mysql服务所需要的RPM包,如下所示:下载地址:。安装mysql的方法有多种,下面就以RPM包安装和源码安装两种方式为例进行讲解。如上安装其他的5个rpm文件,应该没有什么问题。要使用源码的方式对mysql数据库进行安装,则需要先从相关网站下载获得相应的mysql安装包文件(mysql-5.0.15.tar.gz),然后进行相关的安装工作,安装的具体步骤如下。第1步,为“mysqld”服务增添一个登录组和用户名,执行如下命令。第2步,解压mysql安装包,执行如下命令。第3步,进行相关的配置和编译。给configure分配可执行文件,执行如下命令。改变字符集为GBK[默认字符集为 ISO-8859-1(Latin1)],执行如下命令。第4步,执行如下命令进行安装另外,如果想安装选项文件,使用当前存在的“support-files”文件夹作为模板,执行如下指令。同时,如果需要让mysql每次开机时自动启动,需要执行如下指令。第5步,执行以下命令进行安装目录。第6步,将程序的所有权限授给“root”,并且把数据目录的所有授权给可以进行“mysqld”的用户,假设mysql的安装目录为“/usr/local/mysql”,执行以下命令。首先把文件拥有权授给“root”,执行如下命令。然后把数据目录拥护权授给“mysql”用户,执行如下命令。最后把组的权限授给“mysql”组,执行如下命令。第7步,所有的配置完成后,执行以下命令测试并运行mysql第8步,测试一切正常后,为了安全起见,最好更改管理员的密码。可以运行mysqladmin,执行如下命令。第9步,允许其他用户访问本机,执行以下命令。第10步,修改mysql数据库端口号,执行如下命令。第11步,重启应用,执行如下命令。以上mysql安装方式都稍显复杂,建议在“软件包管理者”窗口中进行安装。安装这个包后,会获得两个mysql的yum repo源:根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。重置密码前,首先要登录登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:然后,重启服务:这样从其它客户机也可以连接上mysql服务了。

查找以前是否安装有mysql,使用下面命令:

rpm -qa|grep -i mysql

如果显示有如下包则说明已安装mysql

mysql-4.1.12-3.RHEL4.1

mysqlclient10-3.23.58-4.RHEL4.1

如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库

删除命令:rpm -e --nodeps 包名

( rpm -ev mysql-4.1.12-3.RHEL4.1 )

删除老版本mysql的开发头文件和库

命令:rm -fr /usr/lib/mysql

rm -fr /usr/include/mysql

注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除

rm -f /etc/my.cnf

rm -fr /var/lib/mysql

下载mysql的rpm包

可以通过wget下载具体的地址因为不能用链接请大家去官网去找

(1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:MySQL服务器;

(2)MySQL-client-5.6.10-1.rhel5.x86_64.rpm:MySQL客户端;

(3)MySQL-devel-5.6.10-1.rhel5.x86_64.rpm:Mysql开发依赖包。

下载后放到Liunx服务器中,如图所示

安装MySQL Server的rpm包

rpm -ivh MySQL-server-5.6.21-1.linux_glibc2.5.x86_64.rpm

安装过程如图所示

安装完成后会生成root用户的随机密码,请使用“cat /root/.mysql_secret”或类似命令进行查看。

安装MySQL客户端

rpm -ivh MySQL-client-5.6.21-1.linux_glibc2.5.x86_64.rpm

安装MySQL开发依赖包

rpm -ivh MySQL-devel-5.6.21-1.linux_glibc2.5.x86_64.rpm

启动msyql

安装完成后mysql是没有启动的,运行mysql命令会提示如下错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

可使用如下命令启动MySQL:

service mysql start

或者使用如下命令:

/etc/init.d/mysql start

可使用SET PASSWORD命令修改root用户的密码,参考如下:SET PASSWORD = PASSWORD('root123456')

登录MySQL

使用mysql命令登录MySQL服务器,运行MySQL的命令时,会提示需要设置root用户密码

设置开机自启动

/etc/init.d/mysql start

设置完成后重启系统,使用natstat –nat命令可看到MySQL的3306端口

至此我们已经安装好了mysql数据库,当然现在我们的数据库还不支持远程连接,远程连接会出现以下代码:1130,ERROR 1130: Host 192.168.0.10 is not allowed to connect to this MySQL server,可以通过以下以下来解决

改表法:在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为'%'。

mysql>

mysql>use mysql

mysql>select 'host' from user where user='root'

本人博客供参考

网页链接

下载mysql源安装包shell>wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 

安装mysql源shell>yum localinstall mysql57-community-release-el7-8.noarch.rpm 

检查mysql源是否安装成功 

yum repolist enabled | grep “mysql.-community.” 

 

安装MySQL 

yum install mysql-community-server 

启动MySQL服务 

shell>systemctl start mysqld 

查看MySQL的启动状态 

shell>systemctl status mysqld 

开机启动 

shell>systemctl enable mysqld 

shell>systemctl daemon-reload 

修改root本地登录密码 

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改: 

shell>grep ‘temporary password’ /var/log/mysqld.log 

 

shell>mysql -uroot -p 

mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass4!’ 

或者: 

mysql>set password for ‘root’@’localhost’=password(‘MyNewPass4!’) 

注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误 

添加远程登录用户 

默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户: 

mysql>GRANT ALL PRIVILEGES ON . TO ‘yangxin’@’%’ IDENTIFIED BY ‘Yangxin0917!’ WITH GRANT OPTION

以上部分个人实践过,以下内容待实践

数据库存emoji 表情问题

mysql>SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’ 

+————————–+——————-+ 

| Variable_name | Value | 

+————————–+——————-+ 

| character_set_client | utf8 | 

| character_set_connection | utf8 | 

| character_set_database | latin1 | 

| character_set_filesystem | binary | 

| character_set_results | utf8 | 

| character_set_server | latin1 | 

| character_set_system | utf8 | 

| collation_connection | utf8_general_ci | 

| collation_database | latin1_swedish_ci | 

| collation_server | latin1_swedish_ci | 

+————————–+——————-+ 

10 rows in set (0.02 sec) 

可以看到我的mysql版本是5.7的,utf8mb4有一个使用限制,mysql版本必须是5.5以上,大家需要注意,我目前用的ubuntu系统是16.04的。当前mysql的字符集配置如上表,我们的目的是更改成utf8mb4。 

3.找到mysql的配置文件,可用命令 

sudo find / -name my.cnf 

我的配置文件位置如下,个别的位置有所不同 

/etc/mysql/mysql.conf.d/mysqld.cnf

4.修改配置文件 

在原文中添加以下内容: 

[client] 

default-character-set = utf8mb4 

[mysql] 

default-character-set = utf8mb4 

[mysqld] 

character-set-client-handshake = FALSE 

character-set-server = utf8mb4 

collation-server = utf8mb4_unicode_ci 

init_connect=’SET NAMES utf8mb4’ 

原文件中无“[client]”和“[mysql]”,需要手动添加上。 

……

Here is entries for some specific programs

The following values assume you have at least 32M ram

[client] 

default-character-set = utf8mb4 

[mysql] 

default-character-set = utf8mb4 

[mysqld_safe] 

socket = /var/run/mysqld/mysqld.sock 

nice = 0 

[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-client-handshake = FALSE 

character-set-server = utf8mb4 

collation-server = utf8mb4_unicode_ci 

init_connect=’SET NAMES utf8mb4’ 

#

Instead of skip-networking the default is now to listen only on

……

5.重启mysql服务 

sudo service mysql restart

6.查看结果 

mysql>SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’ 

ERROR 2006 (HY000): MySQL server has gone away 

No connection. Trying to reconnect… 

Connection id: 3 

Current database: * NONE * 

+————————–+——————–+ 

| Variable_name | Value | 

+————————–+——————–+ 

| character_set_client | utf8mb4 | 

| character_set_connection | utf8mb4 | 

| character_set_database | utf8mb4 | 

| character_set_filesystem | binary | 

| character_set_results | utf8mb4 | 

| character_set_server | utf8mb4 | 

| character_set_system | utf8 | 

| collation_connection | utf8mb4_unicode_ci | 

| collation_database | utf8mb4_unicode_ci | 

| collation_server | utf8mb4_unicode_ci | 

+————————–+——————–+ 

10 rows in set (0.00 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8719595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存