Debian Perl Dbd Mysql Install Linux



Install MySQL by executing the following command as root: linux: # zypper install mysql perl-DBD-mysql This will install MySQL with the default options on your system. You'll need to change the defaults in order to make it suitable for OTRS. CPAN installation. Installation of DBD::mysql can be incredibly easy: cpan install DBD::mysql. If you are using the CPAN module for the first time, just answer the questions by accepting the defaults which are fine in most cases. If you are using an older version of Perl, you might instead need a. Perl -MCPAN -e shell install DBD::mysql. On Debian-based systems (including Ubuntu) the package that provides this module is libdbd-mysql-perl: apt-get install libdbd-mysql-perl and on Redhat-based systems it is perl-DBD-mysql: yum install perl-DBD-mysql In both of these cases, installing the back-end DBD package should automatically install the front-end DBI package as a dependency. For supported Debian and Ubuntu versions, MySQL can be installed using the MySQL APT Repository instead of the platform's native software repository. See Section 2.5.2, “Installing MySQL on Linux Using the MySQL APT Repository” for details.

  1. Debian Perl Dbd Mysql Install Linux Mint
  2. Debian Install Perl Module
  3. Debian Install Mysql Client
  4. Debian Perl Dbd Mysql Install Linux Command
  5. Mysql Automated Install Debian
  6. Ubuntu Install Perl-dbd-mysql

Content

  • 8 Errors

Tested with MySQL on

Debian (Etch, Lenny, Squeeze)
Fedora (14)
Ubuntu (Hardy, Intrepid, Jaunty, Karmic, Lucid, Maverick, Natty, Trusty)

Objective

To establish a connection to a MySQL (or MariaDB) database using the Perl DBI module

Background

The DBI module is an abstraction mechanism by which a Perl script can interact with a database with minimal regard for which DBMS (in this case MySQL) is being used to host the database.

In order to use a particular database it is first necessary to connect to it. This gives you a connection handle which is needed when calling other DBI functions.

Scenario

Suppose that there is a database called finance hosted using MySQL on a machine called db.example.com. It accepts remote TCP connections on the usual port number (3306). Valid credentials are the username ‘user’ and the password ‘xyzzy’.

Prerequisites

These instructions assume that you have:

  • a working installation of MySQL (or MariaDB), and
  • a working installation of Perl.

For this particular scenario, MySQL must be configured to accept remote TCP connections to the database and username stated above. (The usual default is to allow connections from the local machine only.)

Method

The DBI module itself does not have the ability to communicate with any specific DBMS: for that it is necessary to install the appropriate back-end module, which in the case of MySQL is DBD::mysql.

On Debian-based systems (including Ubuntu) the package that provides this module is libdbd-mysql-perl:

and on Redhat-based systems it is perl-DBD-mysql:

In both of these cases, installing the back-end DBD package should automatically install the front-end DBI package as a dependency. Within Perl the dependency relationship is reversed: it is the DBI module that must be loaded explicitly, it then loads any required DBD modules as and when they are needed:

The connection to the database is opened using the function connect. It returns a connection handle, which is needed when making subsequent calls to the DBI module:

The first argument to connect is a string which specifies the required ‘data source’. For MySQL or MariaDB it should begin with the prefix dbi:mysql:. Following this prefix is a list of settings separated by semicolons. The example above has two of these:

  • database, the name of the database. According to the documentation it should always be specified.
  • host, the name of the database server. This is required when connecting to a remote server. When it is omitted, or is the empty string, or is the string ‘localhost’, a local connection is made using a UNIX-domain socket. To make a local connection using TCP it is necessary to specify the loopback address numerically (127.0.0.1).

Debian Perl Dbd Mysql Install Linux Mint

The second and third arguments are the username and password. If the username is undefined then it defaults to the owner of the current process (on POSIX-like platforms). The password should be left undefined if no password is required.

The fourth argument is a hash ref containing a set of options. The documentation recommends that AutoCommit should always be specified explicitly. For most purposes it should be enabled in the first instance: if particular transactions require it to be disabled then this can be done later.

By default the option RaiseError is false and PrintError is true, meaning that errors are printed as warnings but do not raise exceptions. It is safer to reverse these defaults (as was done above), because then it is not necessary to explicitly check for errors after every DBI function call.

Testing

The script below opens a connection then tests it using a statement that does not depend on the content of the database:

It should produce the output:

(Note that a SELECT statement without a FROM clause is not standard SQL, so cannot necessarily be used for testing other types of database.)

Linux

Troubleshooting

Provided that you have enabled the RaiseError option (as recommended above), any serious problems should result in either a compilation error or an exception. By default these will be reported to stderr. Some of the more common errors are addressed in detail below.

If you are writing a CGI script then you should look in the web server error log. Alternatively, it may be feasible to execute the CGI script from the command line for testing purposes.

Errors

Debian perl dbd mysql install linux virtualbox

Can't locate DBI.pm

An error similar to:

could indicate that:

  • the DBI module (and therefore probably the DBD module) has not been installed, or
  • the module is not on the include path (@INC).

On Debian-based systems the DBI module is provided by the libdbi-perl package, and on Redhat by perl-DBI. In both of these cases it should be installed automatically as a dependency of the DBD package, so if this has not happened then it is quite likely that the DBD module has not been installed either. You can obtain a list of the installed DBI and DBD modules with the command:

on Debian and

on RedHat.

An issue with the include path would be unusual if you are using pre-packaged modules and have not overridden the default. You can check by inspecting the content of @INC:

Bear in mind that the path seen by (for example) a CGI script will not necessarily be the same as for a script executed from the shell. For this reason, you should try to ensure that any script used for testing is invoked in exactly the same manner as the script being investigated.

Can't locate DBD/mysql.pm

An error similar to:

indicates that the DBI module has been successfully loaded, and that some DBD modules are available (listed on the penultimate line), but that the specific DBD module needed to access MySQL cannot be found. Possible explanations are that:

  • the required DBD module has not been installed (see above),
  • the module is not on the include path (see above, but unlikely if the DBI module was loaded), or
  • the name of the data source passed to DBI::connect was incorrect.
Debian Perl Dbd Mysql Install Linux

You can check the last point by inspecting the first line of the error message, where it gives the path to the module that could not be loaded. For connecting to MySQL it should be DBD/mysql.pm (all lower case for ‘mysql’).

Missing dbi:driver: prefix

An error similar to:

probably indicates an error in the data source passed to DBI::connect. In this case it is a typo: the prefix dbi has been erroneously replaced with bdi.

Access denied for user

An error similar to:

indicates that the DBD module could not authenticate to the database server. There are several possible reasons why this could happen:

  • the hostname is incorrect (but is running an instance of MySQL);
  • the username is incorrect;
  • the password is incorrect; or
  • all of the above are correct but the database server has not been configured to accept them.

Check that you can connect to the database using the mysql command with the same set of credentials:

If this fails then the problem relates to MySQL (not to the DBI module) and will need to be fixed before you can proceed further. Otherwise, the most likely explanation is some difference between the credentials passed to connect and the credentials passed to psql.

Access denied for user to database

An error similar to:

indicates that the DBD module was able to authenticate to the database server, but that the specified user does not have permission to access the specified database. This does not necessarily imply that the specified database exists. Possible root causes are that:

  • the wrong database name was specified, or
  • permission to access the database has not been granted to the specified user.

You can rectify the second of these possibilities by issuing a SQL GRANT statement:

(This would give that user unfettered access to the finance database. You can restrict access to particular tables and/or particular actions if this is more appropriate.)

Unknown database

An error similar to:

indicates that the DBD module was able to authenticate to the database server, and that the specified user has permission to access the specified database, but that the specified database does not exist. Possible root causes are that:

  • the wrong database name was specified, or
  • the database has not been created, or
  • the database has been dropped.

See also

LiveJournal requires several Perl modules to be installed. Installing these modules requires a fully working perl and C development environment (including a C compiler and make tool).

Note

Some modules such as GD and Compress::Zlib require certain system libraries to be pre-installed on your machine. Please read the author-provided README files for each module before proceeding further.

This may mean particular development packages need to be installed on your system, before a Perl module will install in CPAN. For example, on a Debian system, to install the optional Math::BigInt::GMP module, you should install libgmp3-dev first. Similarly, you may need to install the “development” packages for MySQL and GD on your system, before attempting to install the related Perl modules. The names of these packages varies between Linux distributions, but are often called <packagename>-dev. Installing binary packages of modules provided through your Linux distribution is the easier option.

Table 6.1. Required Perl Modules

DateTimelibdatetime-perl
DBIlibdbi-perl
DBD::mysqllibdbd-mysql-perl
Class::Autouselibclass-autouse-perl
Digest::MD5libmd5-perl
Digest::SHA1libdigest-sha1-perl
HTML::Templatelibhtml-template-perl
Image::Sizelibimage-size-perl
MIME::Litelibmime-lite-perl
MIME::Wordslibmime-perl
Compress::Zliblibcompress-zlib-perl
Net::DNSlibnet-dns-perl
URI::URLliburi-perl
HTML::Tagsetlibhtml-tagset-perl
HTML::Parserlibhtml-parser-perl
LWP::Simplelibwww-perl
LWP::UserAgentlibwww-perl
GDlibgd-gd2-perl
Mail::Addresslibmailtools-perl
Unicode::MapUTF8libunicode-maputf8-perl
XML::Simplelibxml-simple-perl
IO::WrapTielibio-stringy-perl
Unicode::CheckUTF8
Captcha::reCAPTCHAlibcaptcha-recaptcha-perl
Digest::HMAC_SHA1libdigest-hmac-perl

Optional modules

GD::Graph, libgd-graph-perl
Required for making graphs for the statistics page.
Proc::ProcessTable, libproc-process-perl
Better reliability for starting daemons necessary for high-traffic installations.
RPC::XML, librpc-xml-perl
Required for outgoing XML-RPC support
SOAP::Lite, libsoap-lite-perl
Required for XML-RPC support.
XML::RSS, libxml-rss-perl
Required for retrieving RSS off of other sites (syndication).
String::CRC32, libstring-crc32-perl
Required for palette-altering of PNG files. Only necessary if you plan to make your own S2 styles that use PNGs, not GIFs.
XML::Atom, libxml-atom-perl
Required for Atom API support.
Math::BigInt::GMP, libmath-bigint-gmp-perl
Aides Crypt::DH so it is not crazy slow.
URI::Fetch, liburi-fetch-perl
Required for OpenID support.
Crypt::DH, libcrypt-dh-perl
Required for OpenID support.
Image::Magick, perlmagick
Required for the userpic factory.
Class::Accessor, libclass-accessor-perl
Required for TheSchwartz job submission.
Class::Trigger, libclass-trigger-perl
Required for TheSchwartz job submission.
Class::Data::Inheritable, libclass-data-inheritable-perl
Required for TheSchwartz job submission.
GnuPG::Interface, libgnupg-interface-perl
Required for email posting.
Mail::GnuPG, libmail-gnupg-perl
Required for email posting.
Text::vCard, libtext-vcard-perl
Used to generate user vCards.
IP::Country::Fast,
Required for country lookup with IP address.
GTop,
Required for Apache per-request database logging.

Debian Install. If you are using Debian the following command should retrieve and build every required module. If there are any modules not yet packaged in Debian, you can use CPAN to install those — Unicode::CheckUTF8 is an example.:

And likewise for the optional modules:

Using CPAN. Alternatively, you can use CPAN to install the modules:

From the root prompt on your server, invoke the CPAN shell:

Once the Perl interpreter has loaded (and been configured), you can install modules with: install MODULENAME.

The first thing you should do is upgrade your CPAN:

Once it is completed, type:

Now, enter the following command to retrieve all of the required modules:

And likewise for the optional modules:

Note

Debian Install Perl Module

Be aware that after freshly installing make / gcc, your perl installation will not necessarily detect it. This means module installation will still fail during the 'make' stage. You may need to invoke the CPAN shell and run the setup routine again, to point to the location of make:

Debian Install Mysql Client

Tip

Debian Perl Dbd Mysql Install Linux Command

You can find out the locations of the various tools the CPAN setup routine (o conf) will ask you about by using the whereis command, at a command prompt. For example:

Mysql Automated Install Debian

To make sure you have the necessary modules run the included tool: $LJHOME/bin/checkconfig.pl--needed-debs --only=modules

Ubuntu Install Perl-dbd-mysql

If checkconfig.pl does not detect all of the required modules, it will tell you which ones you are missing. You should install those.