标签 Linux 下的文章

Ubuntu 13.10 中配备了GNOME 3.8桌面。 尽管它相比Unity是一个可靠稳定以及有特色的替代品,但这个版本还是过时了。

GNOME桌面的最新版本在2013年9月发布,随之而来的是一系列改进的功能、应用程序和可用性的调整。从对高分辨率屏幕的支持到客户端应用窗口上的美化,GNOME 3.10无疑是一个引人注目的升级版本。

好消息是:假设你正在运行Ubuntu 13.10,拥有不错的网络操作和命令行水平,那么你无需继续使用一个过时版本的GNOME。

在Ubuntu 13.10 上如何升级到GNOME 3.10

为了那些爱略过前言直奔主题的读者,我还要重申两点:

要使用本方法安装GNOME 3.10,需运行 Ubuntu 13.10版本。

GNOME 3.10还未在 Ubuntu 13.10上测试,所以升级风险自负。

首先,让我们添加GNOME 3 的PPA到Ubuntu的软件资源中。这个操作可以使用图形界面完成,但使用命令更容易一些。

打开一个新的终端窗口,键入下列命令,在需要时输入你的用户密码:

sudo add-apt-repository ppa:gnome3-team/gnome3-next && sudo apt-get update

添加完PPA并更新包列表后,我们就可以继续,开始安装GNOME 3.10了。运行下列命令,当弹出提示时再次输入你的用户密码:

sudo apt-get update && sudo apt-get install gnome-shell ubuntu-gnome-desktop

获取并安装所有必要的包和组件会花一点时间,所以请耐心一点。

在安装过程中,在终端将会弹出一个提示,要求你选择一种显示管理器,默认使用的是“登录窗口”。

这个决定完全取决于你;UBuntu的Unity Greeter和GNOME的显示管理器都能让你很轻松地在桌面会话之间切换(如果你想保持在Unity界面或者另一个桌面将很方便),但仅仅只有GDM提供给GNOME特定的功能,譬如锁屏通知。

当你确定选择后,使用上下键选择,然后敲击‘确认/返回’键以确认。安装便会继续进行。

增加额外的功能

GNOME 3.10还有一些不错的新特性和应用-包括GNOME天气,音乐盒及地图 以及其它各种各样的改变。因为并不是所有的特性都足够稳定以致于可以被包含在我们之前添加的GNOME 3 PPA中,所以如果你想使用它们,就需要利用到两个额外的GNOME PPA。

现在,你需要意识到很重要的是,在这些仓库里的一些包据说有稳定性问题。这些问题大多是小问题,譬如应用程序崩溃和损坏。但还是有潜在的可能,导致像使GNOME完全崩溃这样的重大问题。

除开这个警告不说,在终端里打开一个新的选项卡,输入下列命令:

sudo add-apt-repository ppa:gnome3-team/gnome3-staging
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update && sudo apt-get dist-upgrade

为了添加一些之前提到的很酷的应用,运行这个命令:

sudo apt-get install gnome-weather gnome-music gnome-maps cheese gnome-documents

这样之后,就搞定了!

你可能会想先注销然后重新登录(记得选择“GNOME”会话)以确保改动都已经正确生效了。

细小的差别

如果你在不卸载Unity的情况下安装GNOME 3.10,那么有一些注意事项。

首先,你会发现在系统设置里“Online Accounts”有两个入口。其中,有钥匙图标的是Unity版的,另一个有插孔符号的是GNOME版的。

一些应用程序可能会要求你往Unity中添加账户(Shotwell, Gwibber, Empathy),有一些可能是要求往GNOME中添加(Evolution, Documents, Contacts)。

“通知”和“搜索”入口是GNOME专有的,它们让你挑选哪些应用程序和资源能够显示通知或出现在活动区。

卸载GNOME 3.10

假如你已经尝试了GNOME 3.10,但不喜欢它。这时该怎么办?

使用一个叫做“PPA Purge”的命令行工具,移除GNOME 3.10 是一个相当简单的过程。这个工具可以在Ubuntu软件中心里找到,是目前为止自动移除或降级从PPA安装的包的最容易的方法。

为了使用这个工具,我们需要返回终端然后键入下面命令,要留意任何出现在降级过程中的提示。

sudo ppa-purge ppa:gnome3-team/gnome3-next

如果你也添加了其它可选的PPA,你也需要清除它们:

sudo ppa-purge ppa:gnome3-team/gnome3-staging
sudo ppa-purge ppa:gnome3-team/gnome3

完成后,你就剩下了原来的 GNOME 3.8 桌面。如果你不再想保留GNOME Shell了,你可以执行下列命令去卸载它:

sudo apt-get remove gnome-shell ubuntu-gnome-desktop

最后,手动移除任何在降级之后可能残留的应用程序(譬如,Epiphany and GNOME Documents),然后重启。


via: http://www.omgubuntu.co.uk/2013/12/upgrade-gnome-3-10-ubuntu-13-10

译者:KAyGuoWhu 校对:jasminepeng

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Linux从未兑现最初的承诺---作为一款传统的桌面操作系统。然而在2013年中,在社区的驱动下,它变得无处不在。

IMG

2013年,从各方面看,都是属于Linux的一年。Linux基金会执行董事Jim Zemlin宣布Linux的已经普及到了运算的每一个角落。“从智能手机,平板电脑,消费电器和汽车,到开放云和高性能计算机,以及游戏平台等,是Linux一直是几乎无处不在的,” Zemlin 说到

Linux是如何蔓延到技术世界的每一个角落?毕竟,Linux并未真正实现其最初的承诺---成为一款取代Microsoft和Windows的传统的桌面操作系统。内核和代码都只是这个故事的一部分,Linux的无所不在归结为它在激发和凝聚社区方面的能力,而非出众的技术。

足够好,但仍然有一些缺陷

话虽如此,我们并非认为如果技术较为落后,Linux仍旧会取得今天的成就。正如甲骨文公司的负责Linux、MySQL和虚拟化和开源产品营销的高级主管莫妮卡·库马尔所说,“没有卓越的技术,优越的社会就不会团结在Linux操作系统周围。” 这是任何成功的开源项目的 关键组件之一,即伟大的初始代码。

然而,这还不够!

当刚被推出的时候,Linux是一个廉价的,“足够好”的替代专有UNIX的系统。但是,并未做到更好。事实上,在最早开发Linux后的10多年间,InfoWorld仍能令人信服地声称,“作为UNIX的变种,相比于Linux操作系统,Solaris是技术优越的操作系统”。UNIX,毕竟是定位于一个相对狭窄的应用程序和硬件类型,允许其供应商针对特定的任务来深度优化它的性能。

正如IBM所解释的那样,Linux恰恰相反:

GNU / Linux的发展...比UNIX更加多样化。开发人员来自许多不同的背景,因此有不同的经验和想法。在Linux社区内部,目前还没有一套严格的标准的工具,环境和功能....由于缺乏标准,导致Linux中出现明显的不一致性。

有趣的是,这也赋予了Linux最大的优势:适用于所有用户的能力。

为何社区喜爱Linux

但为什么是Linux?考虑到当Linux推出时,对于大多数任务来说,只是勉强足够使用,是什么促使一个社区形成的?Ubuntu Linux制造商Canonical的OEM部门主管,Brent Fox,认为相对于失败的风险,一个公共平台的回报更加诱人。

@mjasay 在很长一段时间内,该技术本身是不成熟的。这对于已经厌烦现在的OS的人们是一种吸引力,它吸引了一大群人 — Brent Fox (@brentfox) December 19, 2013

这些基本上来说是对的,但它与历史并不完全相符。毕竟,Linux的最早倡导者之一,是一个有庞大的UNIX的业务需要保护的公司:IBM。IBM需要Linux来统一其不同的硬件线路,并且看到了在Linux上搭建一个更大的硬件和服务业务的潜力,即使以某些UNIX的收入为代价。

现如今,Linux成为许多数十亿美元级别公司的心脏。就如"Who Writes Linux?"报告反映的,Linus Torvalds的这个小玩具已经成为世界上一些大公司和最好的开发者关注的焦点。

通过多样性所获得的优势 ... 以及Linus

控制冲突的能力,以及有时在一面旗帜下控制竞争利益的能力使得Linux变得如此成功。它促使不同的公司和个人开发者通过塑造Linux来满足他们的需求。正如Apache软件基金会主席吉姆Jagielski告诉我的那样,和建立一个健康的可行的社区相比,“建立内核较为容易,Linux之所以能够成功,是因为它有一个成功的社区。”

寻求和发现Linux成功之处的顶级Linux开发赞助商名单:

支撑这种多样性的是Linus Torvald的非凡的领导“。由于许多人试图令Linux私有化,托沃兹已经设法让由他的权威所支持的Linux对这种行为说“不”。它工作得很好,但拥有足够的弹性,来让公司提供驱动程序或其他技术,使得Linux非常适合他们的客户。

Linux技术尽管已经变得如此神奇,然而,它并非Linux的最大优势。正如Zemlin在电子邮件中告诉我的那样:

这些天,我并没有得到许多关于Linux的询问,尽管到处都在使用它。许多公司想知道如何最大限度地发挥它的性能以及如何将它的原理应用于其他的事情。这便是我所感兴趣的问题:社区是如何工作的。

伟大的技术一直都在被创造。然而大多数都没能找到观众。Linus Torvalds以及他所塑造的Linux发展的天赋在于,他所开创和完善的社会发展模式。


via: http://readwrite.com/2013/12/19/the-genius-of-linux-is-community-not-technology#feed=/hack

译者:tomatoKiller 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

VMware Workstation是一款“第二类(Type-2)”商用虚拟化软件。被称为“第二类”是因为它是运行在现有的操作系统之上的,而正在运行的计算机则成为其宿主机。

你可以使用VMware Workstation在宿主机上同时运行各自具有独立操作系统的多个客户机。客户机可以是32位或者64位的操作系统。VMware Workstation支持Windows,Mac OS X,Solaris和许多其他系统。

这篇简短的教程将会教你怎么在Ubuntu上面安装VMware Workstation。

因为这个软件是商业软件,因此你必须要拥有一个可用的许可证才能够使用它。你可以从下载页面 下载30天免费体验版来体验它。如果你想注册,获得并且验证一个许可证即可。

想要在Ubuntu上开始安装VMware Workstation,首先需要运行如下命令升级Ubuntu。

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove

升级完电脑后,运行如下命令来让Ubuntu为安装做好准备。

sudo apt-get install build-essential linux-headers-`uname -r`

然后,下载VMware Workstation。接着进入~/Downloads 目录,我的Firefox把下载的文件保存在这里。(译注:如果你的Ubuntu是中文版,该路径默认则为~/下载,下述命令也要相应变为 “cd 下载”)

cd Downloads

如果下载的包是.zip格式的,则运行如下命令解压下载的包,否则跳过这一步。

unzip VMware-Workstation-Full*.zip

然后,运行如下命令给文件加上可执行权限。

chmod +x VMware-Workstation-Full*.bundle

最后,运行下面的命令开始安装。

sudo ./VMware-Workstation-Full*.bundle

在完成安装前按照向导进行选择。

当所有工作完成后,从Dash打开它并开始创建客户机。

你可以从所有的类型中选择创建各种客户机,包括Windows,Linux,Nevell,Solaris等。

Enjoy!


via: http://www.liberiangeek.net/2013/12/daily-ubuntu-tips-install-vmware-workstation-in-ubuntu/

译者:SCUSJS 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

通用串行总线USB)被设计成为连接计算机外设的标准,如键盘、鼠标、打印机、数码相机、便携式媒体播放器、磁盘和网络适配器等等 - 来源:Wikipedia

它已经成为了一个工业标准,现在很难看到一个没有USB口的计算机了。USB闪存的使用使得它更加流行。在Linux上,我们可以使用lsusb来列出USB设备和它的属性。

什么是lsusb

在它的手册上,lsusb定义成:

显示系统中以及连接到系统的USB总线信息的工具。

如何运行lsusb? 要运行lsusb,你可以直接在控制台输入lsusb。

$ lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 17ef:4811 Lenovo Integrated Webcam [R5U877]
Bus 008 Device 002: ID 0a5c:217f Broadcom Corp. Bluetooth Controller

lsusb会显示驱动和内部连接到你系统的设备。

下面介绍如何理解输出。我抓取了上面输出的最后一行:

Bus 008 Device 002 : ID 0a5c:217f Broadcom Corp. Bluetooth Controller
  • Bus 008 : 指明设备连接到哪(哪条总线)
  • Device 002 : 表明这是连接到总线上的第二台设备
  • ID : 设备的ID
  • Broadcom Corp. Bluetooth Controller :生产商名字和设备名

我们同样可以看到在我们的系统中同时使用了USB2.0 root hub驱动和USB 1.1 root hub驱动。

dmesg命令同样可以看到。下面是一个例子。

$ dmesg |grep -i usb

[ 0.353138] usbcore: registered new interface driver usbfs
[ 0.353150] usbcore: registered new interface driver hub
[ 0.353182] usbcore: registered new device driver usb
[ 0.730026] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 0.730116] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1
[ 0.748019] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00
[ 0.748169] hub 1-0:1.0: USB hub found
[ 0.748336] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2
[ 0.768019] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[ 0.768147] hub 2-0:1.0: USB hub found
[ 0.768236] ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver
[ 0.768251] uhci_hcd: USB Universal Host Controller Interface driver 

如何列出USB详细信息

使用-v选项来开启。下面是一个例子。

$ lsusb -v

Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1

找出连接了多少USB设备

使用下面的命令

$ find /dev/bus

接着你会看到像下面的输出:

/dev/bus
/dev/bus/usb
/dev/bus/usb/008
/dev/bus/usb/008/002
/dev/bus/usb/008/001
/dev/bus/usb/007
/dev/bus/usb/007/001
/dev/bus/usb/006
/dev/bus/usb/006/001
/dev/bus/usb/005
/dev/bus/usb/005/001
/dev/bus/usb/004
/dev/bus/usb/004/001
/dev/bus/usb/003
/dev/bus/usb/003/001
/dev/bus/usb/002
/dev/bus/usb/002/004
/dev/bus/usb/002/003
/dev/bus/usb/002/001
/dev/bus/usb/001
/dev/bus/usb/001/001

使用lsusb 命令 的-D 选项,你可以打印特定设备的详细信息。下面是一个博通蓝牙设备的示例。

$ lsusb -D /dev/bus/usb/008/002

Device: ID 0a5c:217f Broadcom Corp. Bluetooth Controller
Couldn’t open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 224 Wireless
bDeviceSubClass 1 Radio Frequency
bDeviceProtocol 1 Bluetooth
bMaxPacketSize0 64
idVendor 0x0a5c Broadcom Corp.
idProduct 0x217f Bluetooth Controller
bcdDevice 3.60
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 216
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0×0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1 

找出大容量存储设备

既然 lsusb -v给我们很详细的信息,那么你或许会错过一些信息。我们可以使用grep命令指定特定的信息。

大容量存储设备会有一个供应商名和ID。我们可以用它作为一个起点。

$ lsusb -v |grep -Ei ‘(idVendor|Mass\ Storage)’

idVendor 0×1005 Apacer Technology, Inc.
bInterfaceClass 8 Mass Storage

你可以看到,我们系统上有一个来自Apacer Technology, Inc的USB大容量存储设备。

以树层级结构输出USB设备

使用 -t选项满足这个要求

$ lsusb -t

/: Bus 08.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 07.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 06.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 05.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 04.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 03.Port 1: Dev 1, Class=root\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 02.Port 1: Dev 1, Class=root\_hub, Driver=ehci_hcd/6p, 480M
|__ Port 1: Dev 4, If 0, Class=stor., Driver=usb-storage, 480M
|__ Port 6: Dev 3, If 0, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M
|__ Port 6: Dev 3, If 1, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M
/: Bus 01.Port 1: Dev 1, Class=root\_hub, Driver=ehci_hcd/6p, 480M

数字12M和480M指USB类型的传输速率

  • 12M 意味着 USB 1.0 / 1.1的速率是 12Mbit/s
  • 480M 意味着 USB 2.0的速率是 480Mbit/s

如果你找到5.0G,那意味这你有USB 3.0类型接口。它有5.0Gbit/s的传输速率。Linux从/var/lib/usbutils/usb.ids识别USB设备的详细信息。或者你可以访问Linux-USB.org获取最新的USB ID列表。

这些就是lsusb命令的基础。你可以用lsusb命令对你的系统上的USB设备做一个诊断。一般来说,你可以通过lsusb的手册探索命令的更多详细细节。只要输入man lsab来打开它的手册。


via: http://linoxide.com/linux-command/linux-lsusb-command-print-usb/

译者:geekpi 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

几个星期前,我们展示了如何在Microsoft Windows中移动Dropbox文件夹到一个移动硬盘。该教程获得一致好评。对于使用Ubuntu操作系统的用户来说同样适用。

这个简短的教程将告诉你如何在Ubuntu下轻松地将Dropbox文件夹移动到另一个位置。

我写这些教程的原因是,几个月前我收到了一台全新的只有128GB SSD硬盘的惠普EliteBook笔记本电脑。我爱这台快速且性能良好的电脑。

它的缺点是,本地存储太小,无法处理我所有的东西。除了我的本地应用程序和数据,我在我的Dropbox也有几个GB大小的文件。

所以,当我同步我的Dropbox帐号并下载它的所有内容,我的HP EliteBook,完全消耗掉整个本地磁盘。

唯一的解决办法是,不使用本地存储磁盘直接将Dropbox文件夹移动到一个外部的移动硬盘上中。

如果你发现自己也有类似的问题,无论是使用Windows还是Ubuntu,请按照下列步骤,以腾出本地磁盘上的空间。在Ubuntu中开始移动Dropbox文件夹,首先插入外部存储器。(译注:本例并非真实的外部移动硬盘,而是在vbox测试环境中测试。)

插入磁盘后,进入Unity Dash 并搜索Disks。打开它并选择你希望适用的外部驱动器,点击 Tools –> Format

下一步,格式化驱动器的文件系统为NTFS格式。

格式化之后,选择 Tools –> Mount Options

然后指定相应的选项,如下图所示:安装点(准备将Dropbox的文件夹放到这里),文件系统类型,以及下面的图片中的其他选项。保存它时,你就大功告成了。

在此之后,退出Dropbox的服务并在默认位置(/home/用户名/Dropbox)删除当前的Dropbox文件夹(译注:在Dropbox完全移动好之前,我不建议你如本文一样删除原来的文件夹,而是将文件夹改名,要不万一出错呢?)。当您再次启动Dropbox的服务时,它会提醒你缺少的文件夹。点击重新链接按钮以指定新的位置(就是你的移动硬盘上的新位置)。

当提示选择安装类型,选择‘Advanced’并指定位置安装Dropbox文件夹。

设置完毕后,重新启动,如果Dropbox的不会提示你缺少文件夹,那么就成功了。

教程就是这样!

如果没有安装NTFS-3G,运行这个命令来安装它。

sudo apt-get install ntfs-3g

via: http://www.liberiangeek.net/2013/12/move-dropboxs-folder-to-an-external-drive-in-ubuntu/

译者:乌龙茶 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

此前我们已经有发表过Linux 面试基础问答之共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活。心动不如行动,我们这就为您奉上 15个 MySQL 面试题

问题1:你如何确定 MySQL 是否处于运行状态?

答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。
root@localhost:/home/avi# service mysql status

/usr/bin/mysqladmin  Ver 8.42 Distrib 5.1.72, for debian-linux-gnu on i486
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 5.1.72-2
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 1 hour 22 min 49 sec

Threads: 1  Questions: 112138  Slow queries: 1  Opens: 1485  Flush tables: 1  Open tables: 64  Queries per second avg: 22.567.

问题2:如何开启或停止 MySQL 服务?

答案:运行命令 service mysqld start 开启服务;运行命令 service mysqld stop 停止服务。
root@localhost:/home/avi# service mysql stop

Stopping MySQL database server: mysqld.

root@localhost:/home/avi# service mysql start

Starting MySQL database server: mysqld.

Checking for corrupt, not cleanly closed and upgrade needing tables..

问题3:如何通过 Shell 登入 MySQL?

答案:运行命令 mysql -u root -p
root@localhost:/home/avi# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 207 
Server version: 5.1.72-2 (Debian) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql>

问题4:如何列出所有数据库?

答案:运行命令 show databases;
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| a1                 | 
| cloud              | 
| mysql              | 
| phpmyadmin         | 
| playsms            | 
| sisso              | 
| test               | 
| ukolovnik          | 
| wordpress          | 
+--------------------+ 
10 rows in set (0.14 sec)

问题5: 如何切换到某个数据库并在上面工作?

答案:运行命令 use database\_name; 进入名为 database\_name 的数据库。
mysql> use cloud; 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 

Database changed 
mysql>

问题6:如何列出某个数据库内所有表?

答案:在当前数据库运行命令 show tables;
mysql> show tables; 
+----------------------------+ 
| Tables_in_cloud            | 
+----------------------------+ 
| oc_appconfig               | 
| oc_calendar_calendars      | 
| oc_calendar_objects        | 
| oc_calendar_repeat         | 
| oc_calendar_share_calendar | 
| oc_calendar_share_event    | 
| oc_contacts_addressbooks   | 
| oc_contacts_cards          | 
| oc_fscache                 | 
| oc_gallery_sharing         | 
+----------------------------+ 
10 rows in set (0.00 sec)

问题7:如何获取表内所有 Field 对象的名称和类型?

答案:运行命令 describe table\_name;
mysql> describe oc_users; 
+----------+--------------+------+-----+---------+-------+ 
| Field    | Type         | Null | Key | Default | Extra | 
+----------+--------------+------+-----+---------+-------+ 
| uid      | varchar(64)  | NO   | PRI |         |       | 
| password | varchar(255) | NO   |     |         |       | 
+----------+--------------+------+-----+---------+-------+ 
2 rows in set (0.00 sec)

问题8:如何删除表?

答案:运行命令 drop table table\_name;
mysql> drop table lookup; 

Query OK, 0 rows affected (0.00 sec)

问题9:如何删除数据库?

答案:运行命令 drop database database-name;
mysql> drop database a1; 

Query OK, 11 rows affected (0.07 sec)

问题10:如何查看表内所有数据?

答案:运行命令 select * from table\_name;
mysql> select * from engines; 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| ENGINE     | SUPPORT | COMMENT                                                        | TRANSACTIONS | XA   | SAVEPOINTS | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        | 
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         | 
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         | 
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         | 
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         | 
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       | 
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         | 
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
8 rows in set (0.00 sec)

问题11:如何从表(比如 oc\_users )中获取一个 field 对象(比如 uid)的所有数据?

答案:运行命令 select uid from oc\_users;
mysql> select uid from oc_users; 
+-----+ 
| uid | 
+-----+ 
| avi | 
+-----+ 
1 row in set (0.03 sec)

问题12:假设你有一个名为 ‘xyz’ 的表,它存在多个字段,如 ‘createtime’ 和 ‘engine’。名为 engine 的字段由 ‘Memoty’ 和 ‘MyIsam’ 两种数值组成。如何只列出 ‘createtime’ 和 ‘engine’ 这两列并且 engine 的值为 ‘MyIsam’?

答案:运行命令 select create\_time, engine from xyz where engine = ”MyIsam”;
mysql> select create_time, engine from xyz where engine="MyIsam";

+---------------------+--------+ 
| create_time         | engine | 
+---------------------+--------+ 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-12-15 13:43:27 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
| 2013-10-23 14:56:38 | MyISAM | 
+---------------------+--------+ 
132 rows in set (0.29 sec)

问题13:如何列出表 ‘xrt’ 内 name 域值为 ‘tecmint’,web\_address 域值为 ‘tecmint.com’ 的所有数据?

答案:运行命令 select * from xrt where name = “tecmint” and web\_address = “tecmint.com”;
mysql> select  * from xrt where name = "tecmint" and web_address = “tecmint.com”;
+---------------+---------------------+---------------+ 
| Id                  | name                   | web_address | 
+---------------+---------------------+----------------+ 
| 13                 |  tecmint               | tecmint.com  |
+---------------+---------------------+----------------+ 
| 41                 |  tecmint               | tecmint.com  |
+---------------+---------------------+----------------+

问题14:如何列出表 ‘xrt’ 内 name 域值不为 ‘tecmint’,web\_address 域值为 ‘tecmint.com’ 的所有数据?

答案:运行命令 select * from xrt where name != "tecmint" and web\_address = "tecmint.com";
mysql> select * from xrt where name != ”tecmint” and web_address = ”tecmint.com”;

+---------------+---------------------+---------------+ 
| Id            | name                | web_address   | 
+---------------+---------------------+----------------+ 
| 1173          |  tecmint            | tecmint.com   |
+---------------+---------------------+----------------+

问题15:如何知道表内行数?

答案:运行命令 select count(*) from table\_name;
mysql> select count(*) from Tables; 

+----------+ 
| count(*) | 
+----------+ 
|      282 | 
+----------+ 
1 row in set (0.01 sec)

以上是文章的全部内容。这篇‘Linux 面试题’对您有任何帮助吗?别忘了在下面留言,写出您的宝贵意见。


via: http://www.tecmint.com/basic-mysql-interview-questions-for-database-administrators/

译者:bazz2 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出